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
- Docker
- Docker Compose
- Git
- Web domain (I use OVH)
- Open port 80 and 443 on your router (I use a Orange box with default IP)
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:
- bensuperpc.org and www.bensuperpc.org (Wordpress for now)
- phpmyadmin.bensuperpc.org and www.phpmyadmin.bensuperpc.org (PHPMyAdmin for MariaDB)
- pgadmin.bensuperpc.org and www.pgadmin.bensuperpc.org (PGAdmin for PostgreSQL)
- qbittorrent.bensuperpc.org and www.qbittorrent.bensuperpc.org (Qbittorrent)
Build with
- Wordpress
- Gnu Make
- Github API
- Github Actions
- Docker
- Docker Compose
- Docker Hub
- Digital Ocean
- Digital Ocean - How To Install WordPress with Docker Compose
- PGAmin
- Qbittorrent
- Jellyfin
- Letsencrypt
- Certbot
- Nginx
- UWSGI