My infrastructure with docker and Caddy for bensuperpc.org (WIP)
Go to file
2022-12-20 20:36:26 +01:00
bensuperpc_website@0bb75c3e60 Update config 2022-12-20 20:36:26 +01:00
env Update env files 2022-11-26 16:30:11 +01:00
nginx-conf Update website and disable nginx cache for now 2022-12-01 14:42:01 +01:00
nginx-conf-cert Update wp path 2022-11-28 17:15:38 +01:00
.gitignore Add files 2022-11-24 13:32:59 +01:00
.gitmodules Merge N1 2022-11-26 14:47:56 +01:00
docker-compose.yml Update config 2022-12-20 20:36:26 +01:00
LICENSE Initial commit 2022-11-24 13:29:36 +01:00
Makefile Update jellyfin 2022-11-27 19:37:45 +01:00
README.md Update readme 2022-11-28 13:52:28 +01:00

Infrastructure

My personal infrastructure for my servers and services.

About

This is my infrastructure. It's a collection of scripts and configuration files that I use to manage my servers and services. It uses Nginx and docker-compose to run my services (And many other things). It's a work in progress, and I'm still learning a lot about it. If you have any questions or suggestions, feel free to open an issue or a pull request.

Features

  • Nginx reverse proxy
  • Docker / docker-compose
  • Letsencrypt / Certbot
  • Flask (Via UWSGI/NGINX)
  • Wordpress (Via FASTCGI/NGINX)
  • PHPMyAdmin (MariaDB)
  • PGAdmin (PostgreSQL)
  • Qbittorrent
  • Use Flask instead of wordpress as default blog
  • Jellyfin
  • Gitea
  • Mastodon
  • Minecraft server (Hyperworld v2)
  • SSL for all subdomains / Services (Not just the main domain)

Screenshots

Installation and configuration

Requirements

Clone

Clone this repository to your local machine using:

git clone --recurse-submodules --remote-submodules https://github.com/bensuperpc/infrastructure.git

Go to the folder

cd infrastructure

Get the SSL certificate

For all bensuperpc.org, you need to replace it with your domain, example: bensuperpc.com

find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/bensuperpc.com/g'

Keep original config file

cp -r nginx-conf nginx-conf-original

Remove the old config file

rm -fr nginx-conf

Copy nginx-conf-cert to nginx-conf, for temporary use to get the SSL certificate

cp -r nginx-conf-cert nginx-conf

Replace certbot commands in docker-compose.yml, and replace bensuperpc.org by your domain

command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --keep-until-expiring --domain www.bensuperpc.org --domain bensuperpc.org

With to get the SSL certificate

command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --staging --domain www.bensuperpc.org --domain bensuperpc.org

Run the docker-compose and exit with CTRL+C and when you have the SSL certificate

make start-at

Replace certbot commands in docker-compose.yml to update and renew the SSL certificate

command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --force-renewal --domain www.bensuperpc.org --domain bensuperpc.org

Run the docker-compose to update and renew the SSL certificate and exit with CTRL+C when you have the SSL certificate

make start-at

Now you can replace the certbot commands in docker-compose.yml with the original one

command: certonly --webroot --webroot-path=/var/www/html --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --keep-until-expiring --domain www.bensuperpc.org --domain bensuperpc.org

Remove the cert config file

rm -fr nginx-conf

Copy nginx-conf-original to nginx-conf, for definitive use

cp -r nginx-conf-original nginx-conf

Now you start services

make start-at

Flask website

You can follow the README.md to install the Flask website.

Wordpress website

For the Wordpress website, you can configure in GUI when you go to the website.

Start the infrastructure

Start the website with:

make start-at

Stop the website with (or CTRL+C with the previous command):

make stop

URL

You can access to the website with:

Build with

License

License