infrastructure/README.md
2023-04-15 20:41:28 +02:00

6.0 KiB

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
  • Wordpress (Via FASTCGI/NGINX)
  • PHPMyAdmin (MariaDB)
  • PGAdmin (PostgreSQL)
  • Qbittorrent
  • 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.d nginx/conf.d-original

Remove the old config file

rm -fr nginx/nginx-conf

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

cp -r nginx/conf.d-cert nginx/conf.d

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

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

With to get the SSL certificate

    command: >
      certonly --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --staging --webroot
      --webroot-path=/var/www/wordpress --domain bensuperpc.org --domain www.bensuperpc.org
      --webroot-path=/var/www/jellyfin --domain jellyfin.bensuperpc.org --domain www.jellyfin.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 --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --force-renewal --webroot
      --webroot-path=/var/www/wordpress --domain bensuperpc.org --domain www.bensuperpc.org
      --webroot-path=/var/www/jellyfin --domain jellyfin.bensuperpc.org --domain www.jellyfin.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 --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --keep-until-expiring --webroot 
      --webroot-path=/var/www/wordpress --domain bensuperpc.org --domain www.bensuperpc.org
      --webroot-path=/var/www/jellyfin --domain jellyfin.bensuperpc.org --domain www.jellyfin.bensuperpc.org      

Remove the cert config file

rm -fr nginx/conf.d

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

cp -r nginx/conf.d-original nginx/conf.d

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