|
||
---|---|---|
.github | ||
caddy | ||
config/wordpress | ||
env | ||
.gitignore | ||
.gitmodules | ||
docker-compose.caddy.yml | ||
docker-compose.gitea.yml | ||
docker-compose.jellyfin.yml | ||
docker-compose.networks.yml | ||
docker-compose.qbittorrent.yml | ||
docker-compose.uptime-kuma.yml | ||
docker-compose.volumes.yml | ||
docker-compose.wordpress.yml | ||
LICENSE | ||
Makefile | ||
README.md |
Infrastructure
My personal infrastructure for my servers and services.
**I moved to caddy inetead of nginx, you can find the old version before this commit:b98fca7af8
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 ~~ caddy 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
- caddy 2 reverse proxy
- Docker / docker-compose
- Caddy
- Wordpress (Via FASTCGI/caddy)
- Adminer (MariaDB)
- Jellyfin (Media server)
- Gitea (Git server)
- Uptime Kuma (Monitoring)
- Torrent server
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 SFR box with default IP)
To avoid get rate limit from letsencrypt (10 certificates per 3 hours), you need to disable some URL in the caddyfiles and enable them 3h later...
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
Configure the domain
For all bensuperpc.org, you need to replace it with your domain, example: mydomain.com
find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/mydomain.com/g'
Check if all bensuperpc.* are replaced by your domain in Caddyfile
And then, caddy will generate the certificate for you and renew it automatically :D (It's easier than certbot and nginx)
| Domain name | Type | Description | | --- | --- | | bensuperpc.org | Main | Main domain | | adminer.bensuperpc.org | Sub | Adminer for MariaDB for wordpress only | | uptimekuma.bensuperpc.org | Sub | Uptime Kuma for monitoring | | torrent.bensuperpc.org | Sub | Torrent server | | git.bensuperpc.org | Sub | Gitea for git | | link.bensuperpc.org | Sub | For link shortener | | jellyfin.bensuperpc.org | Sub | Jellyfin for media server | | bensuperpc.com | Main | Redirect to bensuperpc.org | | bensuperpc.fr | Sub | Redirect to bensuperpc.org | | bensuperpc.net | Sub | Redirect to bensuperpc.org | | bensuperpc.ovh | Sub | Redirect to bensuperpc.org |
Configure the infrastructure
You need to configure the infrastructure with your own configuration.
You can generate a password with 32 characters:
openssl rand -base64 32
For the wordpress.env file, you need to change the password and user for the database.
WORDPRESS_DB_USER=bensuperpc
WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_HOST=database:3306
For wordpress_db.env file, you need to change the password(s) and user for the database.
MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
MARIADB_DATABASE=wordpress
For adminer.env file, you need to change the password(s) and user for the database.
MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ
MYSQL_USER=bensuperpc
MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw
ADMINER_DEFAULT_SERVER=database
For gitea.env file, you need to change the password(s) and user for the database.
GITEA__database__DB_TYPE=mysql
GITEA__database__HOST=database_gitea:3306
GITEA__database__NAME=gitea
GITEA__database__USER=bensuperpc
GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j
For gitea_db.env file, you need to change the password(s) and user for the database.
MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X
MYSQL_USER=bensuperpc
MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j
MYSQL_DATABASE=gitea
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
Remove countainers with:
make down
All services
You can find all services on the docker-compose.yml file or on this table:
Service | Description | URL |
---|---|---|
Wordpress | Wordpress website | bensuperpc.org and www.bensuperpc.org |
Adminer | Adminer for MariaDB | adminer.bensuperpc.org |
Uptime Kuma | Uptime Kuma for monitoring | uptimekuma.bensuperpc.org |
Torrent | Torrent server | torrent.bensuperpc.org |
Gitea | Gitea for git | git.bensuperpc.org |
Jellyfin | Jellyfin for media server | jellyfin.bensuperpc.org |
URL
You can access to the website with:
- bensuperpc.org and www.bensuperpc.org (Wordpress for now)
Build with
- Wordpress
- Gnu Make
- Github API
- Github Actions
- Docker
- Docker Compose
- Docker Hub
- How To Start WordPress with Caddy using Docker Compose
- Digital Ocean - How To Install WordPress with Docker Compose (nginx)
- Letsencrypt
- Caddy