mirror of
				https://github.com/bensuperpc/infrastructure.git
				synced 2025-10-26 06:46:21 +01:00 
			
		
		
		
	Compare commits
	
		
			41 Commits
		
	
	
		
			mainold
			...
			9110cfec89
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9110cfec89 | |||
| 817d09683b | |||
| aee30a0aaf | |||
| 7231d29b91 | |||
| 2eaaf1f936 | |||
| 5e3b93ac20 | |||
| fe7cac2fb5 | |||
| 4add489e77 | |||
| 8dc8a2bea4 | |||
| b099097526 | |||
| 077aaf806c | |||
| 9835f44382 | |||
| 3bd36ddf87 | |||
| f4b6c9e886 | |||
| 6fc996fdec | |||
| 6fd0a9563e | |||
| 870649e860 | |||
| 01cd09f1e5 | |||
| 6915ecb88d | |||
| 92722a9f59 | |||
| 88499758d6 | |||
| 8730a32195 | |||
| 8f8b37edf8 | |||
| 134060c73d | |||
| 1771a8e3ad | |||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9ef3b36aa6 | ||
| e8f1a9fd35 | |||
| 8b7c2d9f89 | |||
| 32c44523b4 | |||
| 3716b0a4ce | |||
| 7ae9bf54a3 | |||
| 93d6a913ed | |||
| 851c67cf90 | |||
| 0c8bd4664c | |||
| fe8d7c0882 | |||
| 7efd27e4d9 | |||
| 834b50a6ba | |||
| ae6eff1f7c | |||
| b35ebcf7be | |||
| 418724258e | |||
| 1babc4f57b | 
							
								
								
									
										1
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | github: bensuperpc  | ||||||
							
								
								
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | --- | ||||||
|  | name: Bug report | ||||||
|  | about: Create a report to help us improve | ||||||
|  | title: '' | ||||||
|  | labels: '' | ||||||
|  | assignees: '' | ||||||
|  |  | ||||||
|  | --- | ||||||
|  |  | ||||||
|  | **Describe the bug** | ||||||
|  | A clear and concise description of what the bug is. | ||||||
|  |  | ||||||
|  | **To Reproduce** | ||||||
|  | Steps to reproduce the behavior: | ||||||
|  | 1. Go to '...' | ||||||
|  | 2. Click on '....' | ||||||
|  | 3. Scroll down to '....' | ||||||
|  | 4. See error | ||||||
|  |  | ||||||
|  | **Expected behavior** | ||||||
|  | A clear and concise description of what you expected to happen. | ||||||
|  |  | ||||||
|  | **Screenshots** | ||||||
|  | If applicable, add screenshots to help explain your problem. | ||||||
|  |  | ||||||
|  | **Desktop (please complete the following information):** | ||||||
|  |  - OS: [e.g. iOS] | ||||||
|  |  - Browser [e.g. chrome, safari] | ||||||
|  |  - Version [e.g. 22] | ||||||
|  |  | ||||||
|  | **Smartphone (please complete the following information):** | ||||||
|  |  - Device: [e.g. iPhone6] | ||||||
|  |  - OS: [e.g. iOS8.1] | ||||||
|  |  - Browser [e.g. stock browser, safari] | ||||||
|  |  - Version [e.g. 22] | ||||||
|  |  | ||||||
|  | **Additional context** | ||||||
|  | Add any other context about the problem here. | ||||||
							
								
								
									
										10
									
								
								.github/ISSUE_TEMPLATE/custom.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.github/ISSUE_TEMPLATE/custom.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | --- | ||||||
|  | name: Custom issue template | ||||||
|  | about: Describe this issue template's purpose here. | ||||||
|  | title: '' | ||||||
|  | labels: '' | ||||||
|  | assignees: '' | ||||||
|  |  | ||||||
|  | --- | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | --- | ||||||
|  | name: Feature request | ||||||
|  | about: Suggest an idea for this project | ||||||
|  | title: '' | ||||||
|  | labels: '' | ||||||
|  | assignees: '' | ||||||
|  |  | ||||||
|  | --- | ||||||
|  |  | ||||||
|  | **Is your feature request related to a problem? Please describe.** | ||||||
|  | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] | ||||||
|  |  | ||||||
|  | **Describe the solution you'd like** | ||||||
|  | A clear and concise description of what you want to happen. | ||||||
|  |  | ||||||
|  | **Describe alternatives you've considered** | ||||||
|  | A clear and concise description of any alternative solutions or features you've considered. | ||||||
|  |  | ||||||
|  | **Additional context** | ||||||
|  | Add any other context or screenshots about the feature request here. | ||||||
							
								
								
									
										6
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | version: 2 | ||||||
|  | updates: | ||||||
|  |   - package-ecosystem: "github-actions" | ||||||
|  |     directory: "/" | ||||||
|  |     schedule: | ||||||
|  |       interval: "daily"  | ||||||
							
								
								
									
										32
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | name: infrastructure | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - "main" | ||||||
|  |       - "master" | ||||||
|  |       - "dev" | ||||||
|  |     paths-ignore: | ||||||
|  |       - "**/README.md" | ||||||
|  |   pull_request: | ||||||
|  |     branches: | ||||||
|  |       - "*" | ||||||
|  |   schedule: | ||||||
|  |     - cron: "0 9 * * 2" # every tuesday at 9:00 https://crontab.guru/#0_7_*_*_1 | ||||||
|  |   workflow_dispatch: | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   image: | ||||||
|  |     name: infrastructure | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     timeout-minutes: 30 | ||||||
|  |     steps: | ||||||
|  |       - name: "Checkout Code" | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           submodules: "recursive" | ||||||
|  |           fetch-depth: 0 | ||||||
|  |       - name: "Update server" | ||||||
|  |         run: make update | ||||||
|  |       - name: "Build server" | ||||||
|  |         run: make build | ||||||
							
								
								
									
										31
									
								
								.github/workflows/submodule-update.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.github/workflows/submodule-update.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | name: submodule-update | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   schedule: | ||||||
|  |     - cron: '0 */8 * * *' | ||||||
|  |   workflow_dispatch: | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   image: | ||||||
|  |     name: submodule-update | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - name: "Checkout Code" | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           token: ${{ secrets.CI_TOKEN }} | ||||||
|  |           repository: ${{ github.repository }} | ||||||
|  |           submodules: 'recursive' | ||||||
|  |           fetch-depth: 1 | ||||||
|  |       # Update references | ||||||
|  |       - name: Git Sumbodule Update | ||||||
|  |         run: | | ||||||
|  |           git pull --recurse-submodules | ||||||
|  |           git submodule update --remote --recursive | ||||||
|  |       # Commit and push | ||||||
|  |       - name: Commit update | ||||||
|  |         run: | | ||||||
|  |           git config --global user.name 'Bensuperpc' | ||||||
|  |           git config --global user.email 'bensuperpc@gmail.com' | ||||||
|  |           git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} | ||||||
|  |           git commit -am "Auto updated submodule references" && git push || echo "No changes to commit" | ||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1 +1 @@ | |||||||
| *.env |  | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,15 +1,8 @@ | |||||||
| #////////////////////////////////////////////////////////////// | #////////////////////////////////////////////////////////////// | ||||||
| #//   ____                                                   // |  | ||||||
| #//  | __ )  ___ _ __  ___ _   _ _ __   ___ _ __ _ __   ___  // |  | ||||||
| #//  |  _ \ / _ \ '_ \/ __| | | | '_ \ / _ \ '__| '_ \ / __| // |  | ||||||
| #//  | |_) |  __/ | | \__ \ |_| | |_) |  __/ |  | |_) | (__  // |  | ||||||
| #//  |____/ \___|_| |_|___/\__,_| .__/ \___|_|  | .__/ \___| // |  | ||||||
| #//                             |_|             |_|          // |  | ||||||
| #////////////////////////////////////////////////////////////// |  | ||||||
| #//                                                          // | #//                                                          // | ||||||
| #//  Infrastructur, 2022                                     // | #//  Infrastructure, 2024                                    // | ||||||
| #//  Created: 14, April, 2022                                // | #//  Created: 14, April, 2022                                // | ||||||
| #//  Modified: 10, April, 2023                               // | #//  Modified: 05, May, 2024                                 // | ||||||
| #//  file: -                                                 // | #//  file: -                                                 // | ||||||
| #//  -                                                       // | #//  -                                                       // | ||||||
| #//  Source:                                                 // | #//  Source:                                                 // | ||||||
| @@ -20,13 +13,10 @@ | |||||||
|  |  | ||||||
| DOCKER := docker | DOCKER := docker | ||||||
|  |  | ||||||
| PROFILES := webserver database wordpress | PROFILES := webserver wordpress adminer uptime-kuma portainer qbittorrent gitea jellyfin watchtower backup syncthing openssh | ||||||
| PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) | PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) | ||||||
|  |  | ||||||
|  | COMPOSE_FILES :=  $(shell find docker-compose*.yml | sed -e 's/^/--file /') | ||||||
| COMPOSE_FILES :=  $(shell find docker-compose* | sed -e 's/^/--file /') |  | ||||||
|  |  | ||||||
| AUTHOR := bensuperpc |  | ||||||
|  |  | ||||||
| .PHONY: build all | .PHONY: build all | ||||||
| all: start | all: start | ||||||
| @@ -45,7 +35,7 @@ start-at: | |||||||
|  |  | ||||||
| .PHONY: docker-check | .PHONY: docker-check | ||||||
| docker-check: | docker-check: | ||||||
| 	docker compose $(COMPOSE_FILES) $(PROFILES_CMD) config | 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) config | ||||||
|  |  | ||||||
| .PHONY: stop | .PHONY: stop | ||||||
| stop: down | stop: down | ||||||
| @@ -66,11 +56,14 @@ state: | |||||||
| 	docker compose $(COMPOSE_FILES) ps | 	docker compose $(COMPOSE_FILES) ps | ||||||
| 	docker compose $(COMPOSE_FILES) top | 	docker compose $(COMPOSE_FILES) top | ||||||
|  |  | ||||||
|  | .PHONY: update-docker | ||||||
|  | update-docker: | ||||||
|  | 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) pull | ||||||
|  |  | ||||||
| .PHONY: update | .PHONY: update | ||||||
| update: | update: update-docker | ||||||
| 	git submodule update --init --recursive --remote | #	git submodule update --init --recursive --remote | ||||||
| 	git pull --recurse-submodules --all --progress | #	git pull --recurse-submodules --all --progress | ||||||
| 	docker compose $(COMPOSE_FILES) $(PROFILES_CMD) pull |  | ||||||
|  |  | ||||||
| .PHONY: clean | .PHONY: clean | ||||||
| clean: | clean: | ||||||
|   | |||||||
							
								
								
									
										128
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										128
									
								
								README.md
									
									
									
									
									
								
							| @@ -2,12 +2,10 @@ | |||||||
|  |  | ||||||
| _My personal infrastructure for my servers and services._ | _My personal infrastructure for my servers and services._ | ||||||
|  |  | ||||||
| **I moved to caddy inetead of nginx, you can find the old version before this commit:**b98fca7af8954770feec0cd962d35f47bde0d5d2** |  | ||||||
|  |  | ||||||
| ## About | ## About | ||||||
|  |  | ||||||
| This is my infrastructure. It's a collection of scripts and configuration files that I use to manage my servers and services. | 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 uses 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. | 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. | If you have any **questions** or **suggestions**, feel free to open an issue or a pull request. | ||||||
|  |  | ||||||
| @@ -15,15 +13,13 @@ If you have any **questions** or **suggestions**, feel free to open an issue or | |||||||
|  |  | ||||||
| - [x] caddy 2 reverse proxy | - [x] caddy 2 reverse proxy | ||||||
| - [x] Docker / docker-compose | - [x] Docker / docker-compose | ||||||
| - [x] ~~Letsencrypt / Certbot~~ (Caddy) | - [x] Caddy | ||||||
| - [x] Wordpress (Via FASTCGI/caddy) | - [x] Wordpress (Via FASTCGI/caddy) | ||||||
| - [x] PHPMyAdmin (MariaDB) | - [x] Adminer (MariaDB) | ||||||
| - [ ] Qbittorrent | - [x] Jellyfin (Media server) | ||||||
| - [ ] Jellyfin | - [x] Gitea (Git server) | ||||||
| - [ ] Gitea | - [x] Uptime Kuma (Monitoring) | ||||||
| - [ ] Mastodon | - [x] Torrent server | ||||||
| - [ ] Minecraft server (Hyperworld v2) |  | ||||||
| - [ ] SSL for all subdomains / Services (Not just the main domain) |  | ||||||
|  |  | ||||||
| ## Screenshots | ## Screenshots | ||||||
|  |  | ||||||
| @@ -35,7 +31,9 @@ If you have any **questions** or **suggestions**, feel free to open an issue or | |||||||
| - [Docker Compose](https://docs.docker.com/compose/install/) | - [Docker Compose](https://docs.docker.com/compose/install/) | ||||||
| - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | ||||||
| - [Web domain](https://www.ovh.com/world/domains/) (I use OVH) | - [Web domain](https://www.ovh.com/world/domains/) (I use OVH) | ||||||
| - [Open port 80 and 443 on your router](http://192.168.0.1/) (I use a Orange box with default IP) | - [Open port 80 and 443 on your router](http://192.168.0.1/) (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 certificates in the caddyfiles and enable them 3h later...*** | ||||||
|  |  | ||||||
| ### Clone | ### Clone | ||||||
|  |  | ||||||
| @@ -51,29 +49,89 @@ Go to the folder | |||||||
| cd infrastructure | cd infrastructure | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Get the SSL certificate | ### Configure the domain | ||||||
|  |  | ||||||
| For all **bensuperpc.org**, you need to replace it with your domain, example: **bensuperpc.com** | For all **bensuperpc.org**, you need to replace it with your domain, example: **mydomain.com** | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/bensuperpc.com/g' | 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](caddy/wordpress/Caddyfile) | ||||||
|  |  | ||||||
| And then, caddy will generate the certificate for you and renew it automatically :D (It's easier than certbot and nginx) | 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 | | ||||||
|  | | syncthing.bensuperpc.org | Sub | SyncThing for file synchronization | | ||||||
|  | | ssh.bensuperpc.org | Sub | Openssh for ssh | | ||||||
|  | | bensuperpc.com | Main | Redirect to bensuperpc.org | | ||||||
|  | | bensuperpc.fr | Main | Redirect to bensuperpc.org | | ||||||
|  | | bensuperpc.net | Main | Redirect to bensuperpc.org | | ||||||
|  | | bensuperpc.ovh | Main | Redirect to bensuperpc.org | | ||||||
|  |  | ||||||
| ### Configure the infrastructure | ### Configure the infrastructure | ||||||
|  |  | ||||||
| You must create a file named `.env` with the following content: | You need to configure the infrastructure with your own configuration. | ||||||
|  |  | ||||||
|  | You can generate a password with 32 characters: | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| MARIADB_ROOT_PASSWORD=<your_root_password> | openssl rand -base64 32 | ||||||
| MARIADB_USER=<your_user> |  | ||||||
| MARIADB_PASSWORD=<your_password> |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Wordpress website | For the [wordpress.env](env/wordpress.env) file, you need to change the password and user for the database. | ||||||
|  |  | ||||||
| For the Wordpress website, you can configure in GUI when you go to the website. | ```sh | ||||||
|  | WORDPRESS_DB_USER=bensuperpc | ||||||
|  | WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
|  | WORDPRESS_DB_NAME=wordpress | ||||||
|  | WORDPRESS_DB_HOST=wordpress_db:3306 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | For [wordpress_db.env](env/wordpress_db.env) file, you need to change the password(s) and user for the database. | ||||||
|  |      | ||||||
|  | ```sh | ||||||
|  | MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||||
|  | MARIADB_USER=bensuperpc | ||||||
|  | MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
|  | MARIADB_DATABASE=wordpress | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | For [adminer.env](env/adminer.env) file, you need to change the password(s) and user for the database. | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||||
|  | MYSQL_USER=bensuperpc | ||||||
|  | MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
|  | ADMINER_DEFAULT_SERVER=wordpress_db | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | For [gitea.env](env/gitea.env) file, you need to change the password(s) and user for the database. | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | 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](env/gitea_db.env) file, you need to change the password(s) and user for the database. | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||||
|  | MYSQL_USER=bensuperpc | ||||||
|  | MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
|  | MYSQL_DATABASE=gitea | ||||||
|  | ``` | ||||||
|  |  | ||||||
| ### Start the infrastructure | ### Start the infrastructure | ||||||
|  |  | ||||||
| @@ -89,6 +147,27 @@ Stop the website with (or CTRL+C with the previous command): | |||||||
| make stop | make stop | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | Remove countainers with: | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | make down | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### All services | ||||||
|  |  | ||||||
|  | You can find all services on the [docker-compose.yml](docker-compose.yml) file or on this table: | ||||||
|  |  | ||||||
|  | | Service | Description | URL | | ||||||
|  | | --- | --- | --- | | ||||||
|  | | Wordpress | Wordpress website | [bensuperpc.org](https://bensuperpc.org) and [www.bensuperpc.org](https://www.bensuperpc.org) | | ||||||
|  | | Adminer | Adminer for MariaDB | [adminer.bensuperpc.org](https://adminer.bensuperpc.org) | | ||||||
|  | | Uptime Kuma | Uptime Kuma for monitoring | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | | ||||||
|  | | Torrent | Torrent server | [torrent.bensuperpc.org](https://torrent.bensuperpc.org) | | ||||||
|  | | Gitea | Gitea for git | [git.bensuperpc.org](https://git.bensuperpc.org) | | ||||||
|  | | Jellyfin | Jellyfin for media server | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org) | | ||||||
|  | | SyncThing | SyncThing for file synchronization | [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org) | | ||||||
|  | | Openssh | Openssh for ssh | [ssh.bensuperpc.org](https://ssh.bensuperpc.org) | | ||||||
|  |  | ||||||
| ## URL | ## URL | ||||||
|  |  | ||||||
| You can access to the website with: | You can access to the website with: | ||||||
| @@ -106,13 +185,8 @@ You can access to the website with: | |||||||
| - [Docker Hub](https://hub.docker.com/) | - [Docker Hub](https://hub.docker.com/) | ||||||
| - [How To Start WordPress with Caddy using Docker Compose](https://minhcung.me/how-to-start-wordpress-with-caddy-using-docker-compose-3d31bb9ef88b) | - [How To Start WordPress with Caddy using Docker Compose](https://minhcung.me/how-to-start-wordpress-with-caddy-using-docker-compose-3d31bb9ef88b) | ||||||
| - [Digital Ocean - How To Install WordPress with Docker Compose (nginx)](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose) | - [Digital Ocean - How To Install WordPress with Docker Compose (nginx)](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose) | ||||||
| - [PGAmin](https://www.pgadmin.org/) |  | ||||||
| - [Qbittorrent](https://www.qbittorrent.org/) |  | ||||||
| - [Jellyfin](https://jellyfin.org/) |  | ||||||
| - [Letsencrypt](https://letsencrypt.org/) | - [Letsencrypt](https://letsencrypt.org/) | ||||||
| - [Certbot](https://certbot.eff.org/) | - [Caddy](https://caddyserver.com/) | ||||||
| - [Nginx](https://www.nginx.com/) |  | ||||||
| - [UWSGI](https://uwsgi-docs.readthedocs.io/en/latest/) |  | ||||||
|  |  | ||||||
| ## License | ## License | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,3 +1,15 @@ | |||||||
| #import /path/to/*.caddy | { | ||||||
|  | 	email bensuperpc@gmail.com | ||||||
|  | 	key_type p384 | ||||||
|  |  | ||||||
| import wordpress/Caddyfile | 	log { | ||||||
|  | 		output file /data/logs/access.log | ||||||
|  | 		format console | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | import bensuperpc.org/Caddyfile | ||||||
|  | import bensuperpc.com/Caddyfile | ||||||
|  | import bensuperpc.net/Caddyfile | ||||||
|  | import bensuperpc.ovh/Caddyfile | ||||||
|  | import bensuperpc.fr/Caddyfile | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.com/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.com/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | bensuperpc.com {   | ||||||
|  |   	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | www.bensuperpc.com {   | ||||||
|  |   	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.fr/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.fr/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | bensuperpc.fr { | ||||||
|  | 	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | www.bensuperpc.fr { | ||||||
|  | 	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.net/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.net/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | bensuperpc.net { | ||||||
|  | 	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | www.bensuperpc.net { | ||||||
|  | 	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
							
								
								
									
										89
									
								
								caddy/bensuperpc.org/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								caddy/bensuperpc.org/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | |||||||
|  | www.bensuperpc.org { | ||||||
|  | 	root * /var/www/html | ||||||
|  | 	php_fastcgi wordpress:9000 | ||||||
|  |  | ||||||
|  | 	file_server | ||||||
|  | 	encode zstd gzip | ||||||
|  |  | ||||||
|  | 	#metrics /metrics | ||||||
|  |  | ||||||
|  | 	@disallowed { | ||||||
|  | 		path /xmlrpc.php | ||||||
|  | 		path *.sql | ||||||
|  | 		path /wp-content/uploads/*.php | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	rewrite @disallowed '/index.php' | ||||||
|  |  | ||||||
|  | 	respond /uploads/*.php 404 | ||||||
|  |  | ||||||
|  | 	header { | ||||||
|  | 		# disable FLoC tracking | ||||||
|  | 		Permissions-Policy interest-cohort=() | ||||||
|  |  | ||||||
|  | 		# enable HSTS | ||||||
|  | 		Strict-Transport-Security max-age=31536000; | ||||||
|  |  | ||||||
|  | 		# disable clients from sniffing the media type | ||||||
|  | 		X-Content-Type-Options nosniff | ||||||
|  |  | ||||||
|  | 		# clickjacking protection | ||||||
|  | 		X-Frame-Options DENY | ||||||
|  |  | ||||||
|  | 		# Disable powerful features we don't need | ||||||
|  |         Permissions-Policy "geolocation=(), camera=(), microphone=() interest-cohort=()" | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bensuperpc.org { | ||||||
|  | 	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | adminer.bensuperpc.org { | ||||||
|  | 	reverse_proxy adminer:8080 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | uptimekuma.bensuperpc.org { | ||||||
|  | 	reverse_proxy uptime-kuma:3001 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | torrent.bensuperpc.org { | ||||||
|  | 	reverse_proxy qbittorrent:8080 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | git.bensuperpc.org { | ||||||
|  | 	reverse_proxy gitea:3000 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | jellyfin.bensuperpc.org { | ||||||
|  | 	reverse_proxy jellyfin:8096 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ssh.bensuperpc.org { | ||||||
|  | 	reverse_proxy openssh:2222 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | syncthing.bensuperpc.org { | ||||||
|  | 	reverse_proxy syncthing:8384 { | ||||||
|  | 		header_up Host {upstream_hostport} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | link.bensuperpc.org { | ||||||
|  | 	redir /rickroll https://www.youtube.com/watch?v=dQw4w9WgXcQ permanent | ||||||
|  | 	redir /babyshark https://www.youtube.com/watch?v=XqZsoesa55w permanent | ||||||
|  | 	redir /cowcowcow https://www.youtube.com/watch?v=FavUpD_IjVY permanent | ||||||
|  | 	redir /badapple https://www.youtube.com/watch?v=FtutLA63Cp8 permanent | ||||||
|  | 	redir /macdo https://www.youtube.com/watch?v=Q16KpquGsIc permanent | ||||||
|  | 	redir /superiser https://www.youtube.com/watch?v=srnyVw-OR0g permanent | ||||||
|  | 	redir /daicon https://youtu.be/-840keiiFDE?si=zIPIokytxcnGw5fJ&t=162 permanent | ||||||
|  | 	redir /scp https://www.youtube.com/watch?v=FGCDndN20G8 permanent | ||||||
|  | 	redir /scpfb https://youtu.be/9zrKk-1E8zM?si=8R_ZBVG3GzMUYOe8&t=36 permanent | ||||||
|  | 	redir /mother https://youtu.be/w3NyycHR3fE?si=rNNSW9zYv0bcO2Eu permanent | ||||||
|  | 	redir /cpu https://www.youtube.com/watch?v=y39D4529FM4 permanent | ||||||
|  | 	redir /chanteur https://youtu.be/HXdP15Ubu6M?si=N0qvhqo--3pmSGmb permanent | ||||||
|  | 	redir /bna https://youtu.be/3T3ofoKfEoY?si=_7HkGQXMC7rBng8O permanent | ||||||
|  | 	redir /jojo https://youtu.be/U0TXIXTzJEY?si=2acWJWX06ju2w4uj permanent | ||||||
|  | 	redir /patapon https://youtu.be/H6CbNHLHkmk?si=ZvU8SzrOK-oCUXT5 permanent | ||||||
|  | 	redir /darkwater https://youtu.be/Tr8ZgF4Dc0E?si=CEOmm2J6Jp5rdbbt permanent | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.ovh/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.ovh/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | bensuperpc.ovh { | ||||||
|  | 	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
|  |  | ||||||
|  | www.bensuperpc.ovh { | ||||||
|  | 	redir https://www.bensuperpc.org{uri} permanent | ||||||
|  | } | ||||||
| @@ -1,40 +0,0 @@ | |||||||
| bensuperpc.org { |  | ||||||
| 	# push |  | ||||||
|  |  | ||||||
| 	root * /var/www/html |  | ||||||
| 	php_fastcgi wordpress:9000 |  | ||||||
|  |  | ||||||
| 	file_server |  | ||||||
| 	encode zstd gzip |  | ||||||
|  |  | ||||||
| 	metrics /metrics |  | ||||||
|  |  | ||||||
| 	@disallowed { |  | ||||||
| 		path /xmlrpc.php |  | ||||||
| 		path *.sql |  | ||||||
| 		path /wp-content/uploads/*.php |  | ||||||
| 	} |  | ||||||
| 	rewrite @disallowed '/index.php' |  | ||||||
|  |  | ||||||
| 	respond /uploads/*.php 404 |  | ||||||
|  |  | ||||||
| 	header { |  | ||||||
| 		-Server |  | ||||||
| 		Content-Security-Policy default-src 'self' *.bensuperpc.org |  | ||||||
| 		X-XSS-Protection 1; mode=block |  | ||||||
| 		Strict-Transport-Security max-age=31536000; includeSubDomains; preload |  | ||||||
| 		X-Frame-Options DENY |  | ||||||
| 		X-Frame-Options: SAMEORIGIN |  | ||||||
| 		X-Content-Type-Options nosniff |  | ||||||
| 		Referrer-Policy no-referrer-when-downgrade |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	log { |  | ||||||
| 		output stdout |  | ||||||
| 		format console |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.com { |  | ||||||
| 	redir https://bensuperpc.org{uri} |  | ||||||
| } |  | ||||||
							
								
								
									
										3
									
								
								config/wordpress/php.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								config/wordpress/php.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | memory_limit = 1024M | ||||||
|  | upload_max_filesize = 64M | ||||||
|  | post_max_size = 64M | ||||||
							
								
								
									
										19
									
								
								docker-compose.adminer.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								docker-compose.adminer.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Adminer | ||||||
|  |   adminer: | ||||||
|  |     image: adminer:latest | ||||||
|  |     container_name: adminer | ||||||
|  |     profiles: | ||||||
|  |       - adminer | ||||||
|  |     restart: on-failure | ||||||
|  |     env_file:  | ||||||
|  |       - env/adminer.env | ||||||
|  |     depends_on: | ||||||
|  |       - wordpress_db | ||||||
|  |       - caddy | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
							
								
								
									
										35
									
								
								docker-compose.backup.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								docker-compose.backup.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Backup | ||||||
|  |   backup: | ||||||
|  |     image: offen/docker-volume-backup:latest | ||||||
|  |     container_name: backup | ||||||
|  |     profiles: | ||||||
|  |       - backup | ||||||
|  |     restart: on-failure | ||||||
|  |     env_file: | ||||||
|  |       - env/backup.env | ||||||
|  |     volumes: | ||||||
|  |       - /var/run/docker.sock:/var/run/docker.sock:ro | ||||||
|  |       - backup:/archive | ||||||
|  |       - caddy_data:/backup/caddy_data:ro | ||||||
|  |       - caddy_config:/backup/caddy_config:ro | ||||||
|  | #      - gitea_data:/backup/gitea_data:ro | ||||||
|  | #      - gitea_config:/backup/gitea_config:ro | ||||||
|  | #      - wordpress_db:/backup/wordpress_db:ro | ||||||
|  | #      - wordpress:/backup/wordpress:ro | ||||||
|  | #      - jellyfin_config:/backup/jellyfin_config:ro | ||||||
|  | #      - jellyfin_data:/backup/jellyfin_data:ro | ||||||
|  | #      - jellyfin_cache:/backup/jellyfin_cache:ro | ||||||
|  | #      - qbittorrent_config:/backup/qbittorrent_config:ro | ||||||
|  | #      - qbittorrent_data:/backup/qbittorrent_data:ro | ||||||
|  | #      - uptimekuma_data:/backup/uptimekuma_data:ro | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   backup: | ||||||
|  |     name: backup | ||||||
							
								
								
									
										46
									
								
								docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Webserver | ||||||
|  |   caddy: | ||||||
|  |     image: caddy:latest | ||||||
|  |     container_name: webserver | ||||||
|  |     profiles: | ||||||
|  |       - webserver | ||||||
|  |     restart: on-failure | ||||||
|  |     ports: | ||||||
|  |       - 80:80 | ||||||
|  |       - 443:443 | ||||||
|  |     volumes: | ||||||
|  |       - wordpress:/var/www/html:rw | ||||||
|  |       - caddy_data:/data:rw | ||||||
|  |       - caddy_config:/config:rw | ||||||
|  |       - ./caddy:/etc/caddy:ro | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     env_file: | ||||||
|  |       - env/caddy.env | ||||||
|  |     cap_add: | ||||||
|  |       - NET_ADMIN | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |     #    cap_drop: | ||||||
|  |     #      - ALL | ||||||
|  |     #    cap_add: | ||||||
|  |     #      - CHOWN | ||||||
|  |     #      - FOWNER | ||||||
|  |     #      - DAC_OVERRIDE | ||||||
|  |     #      - SETGID | ||||||
|  |     #      - SETUID | ||||||
|  |     #      - NET_BIND_SERVICE | ||||||
|  |     healthcheck: | ||||||
|  |       test: pidof caddy || exit 1 | ||||||
|  |       interval: 120s | ||||||
|  |       timeout: 10s | ||||||
|  |       retries: 3 | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   caddy_data: | ||||||
|  |     name: caddy_data | ||||||
|  |   caddy_config: | ||||||
|  |     name: caddy_config | ||||||
							
								
								
									
										51
									
								
								docker-compose.gitea.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								docker-compose.gitea.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Gitea | ||||||
|  |   gitea: | ||||||
|  |     image: gitea/gitea:latest-rootless | ||||||
|  |     container_name: gitea | ||||||
|  |     profiles: | ||||||
|  |       - gitea | ||||||
|  |     restart: on-failure | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     env_file: | ||||||
|  |       - env/gitea.env | ||||||
|  |     volumes: | ||||||
|  |       - gitea_data:/var/lib/gitea | ||||||
|  |       - gitea_config:/etc/gitea | ||||||
|  | #      - /etc/timezone:/etc/timezone:ro | ||||||
|  | #      - /etc/localtime:/etc/localtime:ro | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |    | ||||||
|  |   # Database gitea | ||||||
|  |   database_gitea: | ||||||
|  |     image: mariadb:latest | ||||||
|  |     container_name: database_gitea | ||||||
|  |     profiles: | ||||||
|  |       - database | ||||||
|  |       - gitea | ||||||
|  |     depends_on: | ||||||
|  |       - gitea | ||||||
|  |     restart: on-failure | ||||||
|  |     volumes: | ||||||
|  |       - gitea_db:/var/lib/mysql:rw | ||||||
|  |     env_file: | ||||||
|  |       - env/gitea_db.env | ||||||
|  |     command: '--default-authentication-plugin=mysql_native_password' | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   gitea_data: | ||||||
|  |     name: gitea_data | ||||||
|  |   gitea_config: | ||||||
|  |     name: gitea_config | ||||||
|  |   gitea_db: | ||||||
|  |     name: gitea_db | ||||||
							
								
								
									
										28
									
								
								docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Jellyfin | ||||||
|  |   jellyfin: | ||||||
|  |     image: jellyfin/jellyfin:latest | ||||||
|  |     container_name: jellyfin | ||||||
|  |     profiles: | ||||||
|  |       - jellyfin | ||||||
|  |     restart: on-failure | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     volumes: | ||||||
|  |       - jellyfin_config:/config | ||||||
|  |       - jellyfin_data:/movies:ro | ||||||
|  |       - jellyfin_cache:/cache | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   jellyfin_config: | ||||||
|  |     name: jellyfin_config | ||||||
|  |   jellyfin_data: | ||||||
|  |     name: jellyfin_data | ||||||
|  |   jellyfin_cache: | ||||||
|  |     name: jellyfin_cache | ||||||
							
								
								
									
										6
									
								
								docker-compose.networks.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docker-compose.networks.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | networks: | ||||||
|  |   infra-network: | ||||||
|  |     driver: bridge | ||||||
|  |     name: infra-network | ||||||
							
								
								
									
										25
									
								
								docker-compose.openssh.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								docker-compose.openssh.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Openssh | ||||||
|  |   openssh: | ||||||
|  |     image: linuxserver/openssh-server:latest | ||||||
|  |     container_name: openssh | ||||||
|  |     profiles: | ||||||
|  |       - openssh | ||||||
|  |     restart: on-failure | ||||||
|  |     env_file: | ||||||
|  |       - env/openssh.env | ||||||
|  |     volumes: | ||||||
|  |       - openssh_config:/config | ||||||
|  |       - openssh_data:/data | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   openssh_config: | ||||||
|  |     name: openssh_config | ||||||
|  |   openssh_data: | ||||||
|  |     name: openssh_data | ||||||
							
								
								
									
										27
									
								
								docker-compose.qbittorrent.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								docker-compose.qbittorrent.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # qBittorrent | ||||||
|  |   qbittorrent: | ||||||
|  |     image: lscr.io/linuxserver/qbittorrent:latest | ||||||
|  |     container_name: qbittorrent | ||||||
|  |     profiles: | ||||||
|  |       - qbittorrent | ||||||
|  |     restart: on-failure | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     env_file: | ||||||
|  |       - env/qbittorrent.env | ||||||
|  |     volumes: | ||||||
|  |       - qbittorrent_config:/config | ||||||
|  |       - qbittorrent_data:/downloads | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   qbittorrent_config: | ||||||
|  |     name: qbittorrent_config | ||||||
|  |   qbittorrent_data: | ||||||
|  |     name: qbittorrent_data | ||||||
							
								
								
									
										25
									
								
								docker-compose.syncthing.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								docker-compose.syncthing.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # syncthing | ||||||
|  |   syncthing: | ||||||
|  |     image: linuxserver/syncthing:latest | ||||||
|  |     container_name: syncthing | ||||||
|  |     profiles: | ||||||
|  |       - syncthing | ||||||
|  |     restart: on-failure | ||||||
|  |     env_file: | ||||||
|  |       - env/syncthing.env | ||||||
|  |     volumes: | ||||||
|  |       - syncthing_config:/config | ||||||
|  |       - syncthing_data:/data1 | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   syncthing_config: | ||||||
|  |     name: syncthing_config | ||||||
|  |   syncthing_data: | ||||||
|  |     name: syncthing_data | ||||||
							
								
								
									
										16
									
								
								docker-compose.uptime-kuma.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								docker-compose.uptime-kuma.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Uptime Kuma | ||||||
|  |   uptime-kuma: | ||||||
|  |     image: louislam/uptime-kuma:latest | ||||||
|  |     container_name: uptime-kuma | ||||||
|  |     profiles: | ||||||
|  |       - uptime-kuma | ||||||
|  |     volumes: | ||||||
|  |       - uptimekuma_data:/app/data | ||||||
|  |     restart: on-failure | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
							
								
								
									
										5
									
								
								docker-compose.volumes.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								docker-compose.volumes.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   uptimekuma_data: | ||||||
|  |     name: uptimekuma_data | ||||||
							
								
								
									
										16
									
								
								docker-compose.watchtower.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								docker-compose.watchtower.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Watchtower | ||||||
|  |   watchtower: | ||||||
|  |     image: containrrr/watchtower | ||||||
|  |     container_name: watchtower | ||||||
|  |     profiles: | ||||||
|  |       - watchtower | ||||||
|  |     restart: on-failure | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     volumes: | ||||||
|  |       - /var/run/docker.sock:/var/run/docker.sock:rw | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
							
								
								
									
										48
									
								
								docker-compose.wordpress.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								docker-compose.wordpress.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | version: '3.9' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   # Wordpress | ||||||
|  |   wordpress: | ||||||
|  |     image: wordpress:fpm | ||||||
|  |     container_name: wordpress | ||||||
|  |     profiles: | ||||||
|  |       - wordpress | ||||||
|  |     restart: on-failure | ||||||
|  |     depends_on: | ||||||
|  |       - wordpress_db | ||||||
|  |       - caddy | ||||||
|  |     env_file: | ||||||
|  |       - env/wordpress.env | ||||||
|  |     volumes: | ||||||
|  |       - ./config/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro | ||||||
|  |       - wordpress:/var/www/html:rw | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  |   # Database wordpress | ||||||
|  |   wordpress_db: | ||||||
|  |     image: mariadb:latest | ||||||
|  |     container_name: wordpress_db | ||||||
|  |     profiles: | ||||||
|  |       - database | ||||||
|  |       - wordpress | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     restart: on-failure | ||||||
|  |     volumes: | ||||||
|  |       - wordpress_db:/var/lib/mysql:rw | ||||||
|  |     env_file: | ||||||
|  |       - env/wordpress_db.env | ||||||
|  |     command: '--default-authentication-plugin=mysql_native_password' | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   wordpress_db: | ||||||
|  |     name: wordpress_db | ||||||
|  |   wordpress: | ||||||
|  |     name: wordpress | ||||||
| @@ -1,88 +0,0 @@ | |||||||
| version: '3.7' |  | ||||||
| # https://minhcung.me/how-to-start-wordpress-with-caddy-using-docker-compose-3d31bb9ef88b |  | ||||||
| services: |  | ||||||
|   database: |  | ||||||
|     image: mariadb:latest |  | ||||||
|     container_name: database |  | ||||||
|     profiles: |  | ||||||
|       - database |  | ||||||
|     volumes: |  | ||||||
|       - database:/var/lib/mysql:rw |  | ||||||
|     restart: always |  | ||||||
|     env_file: |  | ||||||
|       - env/mariadb.env |  | ||||||
|     environment: |  | ||||||
|       MYSQL_DATABASE: blog_wp |  | ||||||
|     command: '--default-authentication-plugin=mysql_native_password' |  | ||||||
|     networks: |  | ||||||
|       - blog-network |  | ||||||
|   # Wordpress |  | ||||||
|   wordpress: |  | ||||||
|     depends_on: |  | ||||||
|       - database |  | ||||||
|     image: wordpress:6.2-fpm-alpine |  | ||||||
|     container_name: wordpress |  | ||||||
|     profiles: |  | ||||||
|       - wordpress |  | ||||||
|     restart: always |  | ||||||
|     env_file: |  | ||||||
|       - env/wordpress.env |  | ||||||
|     volumes: |  | ||||||
|       - ./php.ini:/usr/local/etc/php/conf.d/custom.ini:ro |  | ||||||
|       - wordpress:/var/www/html:rw |  | ||||||
|     networks: |  | ||||||
|       - blog-network |  | ||||||
|   # Webserver |  | ||||||
|   caddy: |  | ||||||
|     image: caddy:alpine |  | ||||||
|     container_name: webserver |  | ||||||
|     profiles: |  | ||||||
|       - webserver |  | ||||||
|     ports: |  | ||||||
|       - 80:80/tcp |  | ||||||
|       - 80:80/udp |  | ||||||
|       - 443:443/tcp |  | ||||||
|       - 443:443/udp |  | ||||||
|     volumes: |  | ||||||
|       - wordpress:/var/www/html:rw |  | ||||||
|       - caddy_data:/data:rw |  | ||||||
|       - caddy_config:/config:rw |  | ||||||
|       - ./caddy:/etc/caddy:ro |  | ||||||
|     networks: |  | ||||||
|       - blog-network |  | ||||||
| #  phpmyadmin: |  | ||||||
| #    image: phpmyadmin:5.2.0 |  | ||||||
| #    container_name: phpmyadmin |  | ||||||
| #    profiles: |  | ||||||
| #      - phpmyadmin |  | ||||||
| #    restart: always |  | ||||||
| #    env_file:  |  | ||||||
| #      - env/phpmyadmin.env |  | ||||||
| #    ports: |  | ||||||
| #      - 8080:80 |  | ||||||
| #    depends_on: |  | ||||||
| #      - database |  | ||||||
| #    networks: |  | ||||||
| #      - blog-network |  | ||||||
| #    security_opt: |  | ||||||
| #      - no-new-privileges:true |  | ||||||
| #      - seccomp:unconfined |  | ||||||
| #      - apparmor:unconfined |  | ||||||
| #    cap_drop: |  | ||||||
| #      - ALL |  | ||||||
| #    cap_add: |  | ||||||
| #      - CHOWN |  | ||||||
| networks: |  | ||||||
|   blog-network: |  | ||||||
|     driver: bridge |  | ||||||
|     name: blog-network |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   database: |  | ||||||
|     name: database |  | ||||||
|   wordpress: |  | ||||||
|     name: wordpress |  | ||||||
|   caddy_data: |  | ||||||
|     name: caddy_data |  | ||||||
|   caddy_config: |  | ||||||
|     name: caddy_config |  | ||||||
							
								
								
									
										4
									
								
								env/adminer.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/adminer.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||||
|  | MYSQL_USER=bensuperpc | ||||||
|  | MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
|  | ADMINER_DEFAULT_SERVER=wordpress_db | ||||||
							
								
								
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | BACKUP_COMPRESSION="zst" | ||||||
|  | BACKUP_CRON_EXPRESSION="0 2 * * *" | ||||||
|  | # BACKUP_RETENTION_DAYS: '7' | ||||||
|  | # BACKUP_FILENAME="backup-%Y-%m-%dT%H-%M-%S.{{ .Extension }}" | ||||||
							
								
								
									
										0
									
								
								env/caddy.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								env/caddy.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										4
									
								
								env/flask_database.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/flask_database.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| POSTGRES_HOST_AUTH_METHOD=trust |  | ||||||
| POSTGRES_USER=bensuperpc |  | ||||||
| POSTGRES_PASSWORD=nPRh270dKH3hz%6HS2$X%8F3fqoQ*Fex |  | ||||||
| POSTGRES_DB=website |  | ||||||
							
								
								
									
										7
									
								
								env/flask_website.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								env/flask_website.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +0,0 @@ | |||||||
| FLASK_DEBUG=1 |  | ||||||
|  |  | ||||||
| # Acces to the database |  | ||||||
| POSTGRES_URL=flask_db:5432 |  | ||||||
| POSTGRES_USER=bensuperpc |  | ||||||
| POSTGRES_PW=nPRh270dKH3hz%6HS2$X%8F3fqoQ*Fex |  | ||||||
| POSTGRES_DB=website |  | ||||||
							
								
								
									
										7
									
								
								env/gitea.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								env/gitea.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | USER_UID=1000 | ||||||
|  | USER_GID=1000 | ||||||
|  | GITEA__database__DB_TYPE=mysql | ||||||
|  | GITEA__database__HOST=database_gitea:3306 | ||||||
|  | GITEA__database__NAME=gitea | ||||||
|  | GITEA__database__USER=bensuperpc | ||||||
|  | GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
							
								
								
									
										4
									
								
								env/gitea_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/gitea_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||||
|  | MYSQL_USER=bensuperpc | ||||||
|  | MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
|  | MYSQL_DATABASE=gitea | ||||||
							
								
								
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | PUID=1000 | ||||||
|  | PGID=1000 | ||||||
|  | PUBLIC_KEY= | ||||||
|  | # PUBLIC_KEY_FILE= | ||||||
|  | # PUBLIC_KEY_DIR= | ||||||
|  | # PUBLIC_KEY_URL= | ||||||
|  | SUDO_ACCESS=false | ||||||
|  | PASSWORD_ACCESS=false | ||||||
|  | # USER_PASSWORD= | ||||||
|  | # USER_PASSWORD_FILE= | ||||||
|  | # USER_NAME= | ||||||
							
								
								
									
										3
									
								
								env/pgadmin.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								env/pgadmin.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +0,0 @@ | |||||||
| PGADMIN_DEFAULT_EMAIL=bensuperpc@bensuperpc.org |  | ||||||
| PGADMIN_DEFAULT_PASSWORD=LmRVf9DY291ez7B^^%2RntHcsCrJ5fQ! |  | ||||||
| #PGADMIN_ENABLE_TLS |  | ||||||
							
								
								
									
										4
									
								
								env/phpmyadmin.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/phpmyadmin.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| MYSQL_ROOT_PASSWORD=g1qQWxTXyFXIKpAfbE0h5bxn&prr4zfd |  | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt |  | ||||||
| PMA_HOST=db |  | ||||||
							
								
								
									
										5
									
								
								env/qbittorrent.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								env/qbittorrent.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | PUID=1000 | ||||||
|  | PGID=1000 | ||||||
|  | TZ=Etc/UTC | ||||||
|  | WEBUI_PORT=8080 | ||||||
|  | TORRENTING_PORT=6881 | ||||||
							
								
								
									
										2
									
								
								env/syncthing.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								env/syncthing.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | PUID=1000 | ||||||
|  | PGID=1000 | ||||||
							
								
								
									
										4
									
								
								env/wordpress.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/wordpress.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| WORDPRESS_DB_USER=bensuperpc | WORDPRESS_DB_USER=bensuperpc | ||||||
| WORDPRESS_DB_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt | WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
| WORDPRESS_DB_NAME=wordpress | WORDPRESS_DB_NAME=wordpress | ||||||
| WORDPRESS_DB_HOST=wp_db:3306 | WORDPRESS_DB_HOST=wordpress_db:3306 | ||||||
							
								
								
									
										4
									
								
								env/wordpress_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/wordpress_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||||
|  | MARIADB_USER=bensuperpc | ||||||
|  | MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
|  | MARIADB_DATABASE=wordpress | ||||||
							
								
								
									
										4
									
								
								env/wp_database.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/wp_database.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| MARIADB_ROOT_PASSWORD=g1qQWxTXyFXIKpAfbE0h5bxn&prr4zfd |  | ||||||
| MARIADB_USER=bensuperpc |  | ||||||
| MARIADB_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt |  | ||||||
| MARIADB_DATABASE=wordpress |  | ||||||
| @@ -1,32 +0,0 @@ | |||||||
| version: "3.9" |  | ||||||
|  |  | ||||||
| services: |  | ||||||
|   certbot: |  | ||||||
|     depends_on: |  | ||||||
|       - webserver |  | ||||||
|     image: certbot/certbot:v1.32.0 |  | ||||||
|     container_name: certbot |  | ||||||
|     profiles: |  | ||||||
|       - certbot |  | ||||||
|     volumes: |  | ||||||
|       - certbot-cert:/etc/letsencrypt |  | ||||||
|       - wordpress:/var/www/wordpress |  | ||||||
|       - jellyfin:/var/www/jellyfin |  | ||||||
|     #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  |  | ||||||
|  |  | ||||||
|     #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  |  | ||||||
|  |  | ||||||
|     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 |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   certbot-cert: |  | ||||||
|     name: certbot-cert |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| version: "3.9" |  | ||||||
|  |  | ||||||
| services: |  | ||||||
|   qbittorrent: |  | ||||||
|     image: lscr.io/linuxserver/qbittorrent:latest |  | ||||||
|     container_name: qbittorrent |  | ||||||
|     profiles: |  | ||||||
|       - qbittorrent |  | ||||||
|     environment: |  | ||||||
|       - PUID=1000 |  | ||||||
|       - PGID=1000 |  | ||||||
|       - TZ=Europe/London |  | ||||||
|       - WEBUI_PORT=8080 |  | ||||||
|     volumes: |  | ||||||
|       - qbittorrent-conf:/config |  | ||||||
|       - qbittorrent-downloads:/downloads |  | ||||||
|     #ports: |  | ||||||
|     #  - 8080:8080 |  | ||||||
|     #  - 6881:6881 |  | ||||||
|     #  - 6881:6881/udp |  | ||||||
|     restart: unless-stopped |  | ||||||
|     networks: |  | ||||||
|       - app-network |  | ||||||
|   jellyfin: |  | ||||||
|     image: lscr.io/linuxserver/jellyfin:latest |  | ||||||
|     container_name: jellyfin |  | ||||||
|     profiles: |  | ||||||
|       - jellyfin |  | ||||||
|     environment: |  | ||||||
|       - PUID=1000 |  | ||||||
|       - PGID=1000 |  | ||||||
|       - TZ=Europe/London |  | ||||||
|       - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional |  | ||||||
|     volumes: |  | ||||||
|       - jellyfin-config:/config |  | ||||||
|       - jellyfin-tvseries:/data/tvshows |  | ||||||
|       - jellyfin-movies:/data/movies |  | ||||||
|       - jellyfin:/var/www/html |  | ||||||
|     #ports: |  | ||||||
|     #  - 8096:8096 |  | ||||||
|     #  - 8920:8920 #optional |  | ||||||
|     #  - 7359:7359/udp #optional |  | ||||||
|     #  - 1900:1900/udp #optional |  | ||||||
|     restart: unless-stopped |  | ||||||
|     networks: |  | ||||||
|       - app-network |  | ||||||
| @@ -1,6 +0,0 @@ | |||||||
| version: "3.9" |  | ||||||
|  |  | ||||||
| networks: |  | ||||||
|   app-network: |  | ||||||
|     driver: bridge |  | ||||||
|     name: app-network |  | ||||||
| @@ -1,32 +0,0 @@ | |||||||
| version: "3.9" |  | ||||||
|  |  | ||||||
| services: |  | ||||||
|   webserver: |  | ||||||
|     depends_on: |  | ||||||
|       - wordpress |  | ||||||
|     image: nginx:1.23 |  | ||||||
|     container_name: webserver |  | ||||||
|     profiles: |  | ||||||
|       - webserver |  | ||||||
|     restart: unless-stopped |  | ||||||
|     ports: |  | ||||||
|       - "80:80" |  | ||||||
|       - "443:443" |  | ||||||
|     volumes: |  | ||||||
|       - wordpress:/var/www/wordpress |  | ||||||
|       - jellyfin:/var/www/jellyfin |  | ||||||
|       - ./nginx/conf.d:/etc/nginx/conf.d:ro |  | ||||||
|       - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro |  | ||||||
|       - certbot-cert:/etc/letsencrypt:ro |  | ||||||
|     networks: |  | ||||||
|       - app-network |  | ||||||
|     security_opt: |  | ||||||
|       - "no-new-privileges:true" |  | ||||||
|     cap_drop: |  | ||||||
|       - "ALL" |  | ||||||
|     cap_add: |  | ||||||
|       - "NET_RAW" |  | ||||||
|       - "NET_BIND_SERVICE" |  | ||||||
|       - "CAP_CHOWN" |  | ||||||
|       - "SETGID" |  | ||||||
|       - "SETUID" |  | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| version: "3.9" |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   qbittorrent-downloads: |  | ||||||
|     name: qbittorrent-downloads |  | ||||||
|   qbittorrent-conf: |  | ||||||
|     name: qbittorrent-conf |  | ||||||
|   jellyfin-config: |  | ||||||
|     name: jellyfin-config |  | ||||||
|   jellyfin-tvseries: |  | ||||||
|     name: jellyfin-tvseries |  | ||||||
|   jellyfin-movies: |  | ||||||
|     name: jellyfin-movies |  | ||||||
|   jellyfin: |  | ||||||
|     name: jellyfin |  | ||||||
| @@ -1,62 +0,0 @@ | |||||||
| version: "3.9" |  | ||||||
|  |  | ||||||
| services: |  | ||||||
|   wp_db: |  | ||||||
|     image: mariadb:10.10.2 |  | ||||||
|     container_name: wp_db |  | ||||||
|     profiles: |  | ||||||
|       - wp_db |  | ||||||
|     restart: unless-stopped |  | ||||||
|     env_file:  |  | ||||||
|       - env/wp_database.env |  | ||||||
|     volumes:  |  | ||||||
|       - dbdata:/var/lib/mysql |  | ||||||
|     networks: |  | ||||||
|       - app-network |  | ||||||
|  |  | ||||||
|   wordpress: |  | ||||||
|     depends_on:  |  | ||||||
|       - wp_db |  | ||||||
|     image: wordpress:6.1.1-php8.1-fpm |  | ||||||
|     container_name: wordpress |  | ||||||
|     profiles: |  | ||||||
|       - wordpress |  | ||||||
|     restart: unless-stopped |  | ||||||
|     env_file:  |  | ||||||
|       - env/wordpress.env |  | ||||||
| #    environment: |  | ||||||
| #      - WORDPRESS_DB_HOST=wp_db:3306 |  | ||||||
|     volumes: |  | ||||||
|       - wordpress:/var/www/html |  | ||||||
|     networks: |  | ||||||
|       - app-network |  | ||||||
|     security_opt: |  | ||||||
|       - "no-new-privileges:true" |  | ||||||
|     cap_drop: |  | ||||||
|       - "ALL" |  | ||||||
|     cap_add: |  | ||||||
|       - "NET_RAW" |  | ||||||
|       - "CAP_CHOWN" |  | ||||||
|       - "SETGID" |  | ||||||
|       - "SETUID" |  | ||||||
|  |  | ||||||
|   phpmyadmin: |  | ||||||
|     image: phpmyadmin:5.2.0 |  | ||||||
|     container_name: phpmyadmin |  | ||||||
|     profiles: |  | ||||||
|       - phpmyadmin |  | ||||||
|     restart: unless-stopped |  | ||||||
|     env_file:  |  | ||||||
|       - env/phpmyadmin.env |  | ||||||
| #    ports: |  | ||||||
| #      - 8080:80 |  | ||||||
|     depends_on: |  | ||||||
|       - wp_db |  | ||||||
|     networks: |  | ||||||
|       - app-network |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   wordpress: |  | ||||||
|     name: wordpress |  | ||||||
|   dbdata: |  | ||||||
|     name: dbdata |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| server { |  | ||||||
|         listen 80; |  | ||||||
|         listen [::]:80; |  | ||||||
|  |  | ||||||
|         server_name jellyfin.bensuperpc.org www.jellyfin.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         root /var/www/jellyfin; |  | ||||||
|  |  | ||||||
|         location ~ /.well-known/acme-challenge { |  | ||||||
|                 allow all; |  | ||||||
|                 root /var/www/jellyfin; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 # Proxy main Jellyfin traffic |  | ||||||
|                 proxy_pass http://jellyfin:8096; |  | ||||||
|                 proxy_set_header Host $host; |  | ||||||
|                 proxy_set_header X-Real-IP $remote_addr; |  | ||||||
|                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |  | ||||||
|                 proxy_set_header X-Forwarded-Proto $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Protocol $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Host $http_host; |  | ||||||
|  |  | ||||||
|                 # Disable buffering when the nginx proxy gets very resource heavy upon streaming |  | ||||||
|                 proxy_buffering off; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         resolver 8.8.8.8; |  | ||||||
| } |  | ||||||
| @@ -1,50 +0,0 @@ | |||||||
| server { |  | ||||||
|         listen 80; |  | ||||||
|         listen [::]:80; |  | ||||||
|  |  | ||||||
|         server_name bensuperpc.org www.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         index index.php index.html index.htm; |  | ||||||
|  |  | ||||||
|         root /var/www/wordpress; |  | ||||||
|  |  | ||||||
|         location ~ /.well-known/acme-challenge { |  | ||||||
|                 allow all; |  | ||||||
|                 root /var/www/wordpress; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 try_files $uri $uri/ /index.php$is_args$args; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location ~ \.php$ { |  | ||||||
|                 try_files $uri =404; |  | ||||||
|                 fastcgi_split_path_info ^(.+\.php)(/.+)$; |  | ||||||
|                 fastcgi_pass wordpress:9000; |  | ||||||
|                 fastcgi_index index.php; |  | ||||||
|                 include fastcgi_params; |  | ||||||
|  |  | ||||||
|                 # Necessary to avoid 404 error when changing the wordpress path |  | ||||||
|                 #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |  | ||||||
|                 fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; |  | ||||||
|  |  | ||||||
|                 fastcgi_param PATH_INFO $fastcgi_path_info; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location ~ /\.ht { |  | ||||||
|                 deny all; |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         location = /favicon.ico {  |  | ||||||
|                 log_not_found off; access_log off;  |  | ||||||
|         } |  | ||||||
|         location = /robots.txt {  |  | ||||||
|                 log_not_found off; access_log off; allow all;  |  | ||||||
|         } |  | ||||||
|         location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { |  | ||||||
|                 expires max; |  | ||||||
|                 log_not_found off; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         resolver 8.8.8.8; |  | ||||||
| } |  | ||||||
| @@ -1,141 +0,0 @@ | |||||||
| proxy_cache_path /var/cache/nginx/jellyfin levels=1:2 keys_zone=jellyfin:100m max_size=3g inactive=30d use_temp_path=off; |  | ||||||
| proxy_cache_path /var/cache/nginx/jellyfin-videos levels=1:2 keys_zone=jellyfin-videos:100m inactive=90d max_size=3g; |  | ||||||
| map $request_uri $h264Level { ~(h264-level=)(.+?)& $2; } |  | ||||||
| map $request_uri $h264Profile { ~(h264-profile=)(.+?)& $2; } |  | ||||||
|  |  | ||||||
| upstream jellyfin_server { |  | ||||||
|         # ip_hash; |  | ||||||
|         server jellyfin:8096; |  | ||||||
|         # server jellyfin:8096 weight=1 max_fails=3 fail_timeout=30s; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Redirect all http requests to the main server wordpress_server |  | ||||||
| server { |  | ||||||
|         listen 80; |  | ||||||
|         listen [::]:80; |  | ||||||
|  |  | ||||||
|         server_name jellyfin.bensuperpc.org www.jellyfin.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         location ~ /.well-known/acme-challenge { |  | ||||||
|                 allow all; |  | ||||||
|                 root /var/www/jellyfin; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 return 301 https://$host$request_uri; |  | ||||||
|         } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| server { |  | ||||||
|         listen 443 ssl http2; |  | ||||||
|         listen [::]:443 ssl http2; |  | ||||||
|         server_name jellyfin.bensuperpc.org www.jellyfin.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         #client_max_body_size 20M; |  | ||||||
|         set $jellyfin jellyfin; |  | ||||||
|         resolver 8.8.8.8 valid=30; |  | ||||||
|  |  | ||||||
|         # All things related to SSL |  | ||||||
|         ssl_certificate /etc/letsencrypt/live/bensuperpc.org/fullchain.pem; |  | ||||||
|         ssl_certificate_key /etc/letsencrypt/live/bensuperpc.org/privkey.pem; |  | ||||||
|         ssl_trusted_certificate /etc/letsencrypt/live/bensuperpc.org/chain.pem; |  | ||||||
|         #ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; |  | ||||||
|         #add_header Strict-Transport-Security "max-age=31536000" always; |  | ||||||
|  |  | ||||||
|         include /etc/nginx/conf.d/sub/options-ssl-nginx.conf; |  | ||||||
|  |  | ||||||
|         # Security / XSS Mitigation Headers |  | ||||||
|         # NOTE: X-Frame-Options may cause issues with the webOS app |  | ||||||
|         add_header X-Frame-Options "SAMEORIGIN"; |  | ||||||
|         add_header X-XSS-Protection "1; mode=block"; |  | ||||||
|         add_header X-Content-Type-Options "nosniff"; |  | ||||||
|         #add_header Content-Security-Policy "default-src https: data: blob: http://image.tmdb.org; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.gstatic.com/cv/js/sender/v1/cast_sender.js https://www.gstatic.com/eureka/clank/95/cast_sender.js https://www.gstatic.com/eureka/clank/96/cast_sender.js https://www.gstatic.com/eureka/clank/97/cast_sender.js https://www.youtube.com blob:; worker-src 'self' blob:; connect-src 'self'; object-src 'none'; frame-ancestors 'self'"; |  | ||||||
|  |  | ||||||
|         location = / { |  | ||||||
|                 return 302 http://$host/web/; |  | ||||||
|                 #return 302 https://$host/web/; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 # Proxy main Jellyfin traffic |  | ||||||
|                 proxy_pass http://jellyfin_server; |  | ||||||
|                 proxy_set_header Host $host; |  | ||||||
|                 proxy_set_header X-Real-IP $remote_addr; |  | ||||||
|                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |  | ||||||
|                 proxy_set_header X-Forwarded-Proto $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Protocol $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Host $http_host; |  | ||||||
|  |  | ||||||
|                 # Disable buffering when the nginx proxy gets very resource heavy upon streaming |  | ||||||
|                 proxy_buffering off; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location = /web/ { |  | ||||||
|                 # Proxy main Jellyfin traffic |  | ||||||
|                 proxy_pass http://jellyfin_server/web/index.html; |  | ||||||
|                 proxy_set_header Host $host; |  | ||||||
|                 proxy_set_header X-Real-IP $remote_addr; |  | ||||||
|                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |  | ||||||
|                 proxy_set_header X-Forwarded-Proto $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Protocol $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Host $http_host; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location /socket { |  | ||||||
|                 # Proxy Jellyfin Websockets traffic |  | ||||||
|                 proxy_pass http://jellyfin_server; |  | ||||||
|                 proxy_http_version 1.1; |  | ||||||
|                 proxy_set_header Upgrade $http_upgrade; |  | ||||||
|                 proxy_set_header Connection "upgrade"; |  | ||||||
|                 proxy_set_header Host $host; |  | ||||||
|                 proxy_set_header X-Real-IP $remote_addr; |  | ||||||
|                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |  | ||||||
|                 proxy_set_header X-Forwarded-Proto $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Protocol $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Host $http_host; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # Cache images |  | ||||||
|         location ~ /Items/(.*)/Images { |  | ||||||
|                 #proxy_pass http://127.0.0.1:8096; |  | ||||||
|                 proxy_pass http://jellyfin_server; |  | ||||||
|                 proxy_set_header Host $host; |  | ||||||
|                 proxy_set_header X-Real-IP $remote_addr; |  | ||||||
|                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |  | ||||||
|                 proxy_set_header X-Forwarded-Proto $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Protocol $scheme; |  | ||||||
|                 proxy_set_header X-Forwarded-Host $http_host; |  | ||||||
|  |  | ||||||
|                 proxy_cache jellyfin; |  | ||||||
|                 proxy_cache_revalidate on; |  | ||||||
|                 proxy_cache_lock on; |  | ||||||
|                 add_header X-Cache-Status $upstream_cache_status; # This is only to check if cache is working |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # Cache videos |  | ||||||
|         location ~* ^/Videos/(.*)/(?!live) |  | ||||||
|         { |  | ||||||
|                 slice 2m; |  | ||||||
|  |  | ||||||
|                 proxy_cache jellyfin-videos; |  | ||||||
|                 proxy_cache_valid 200 206 301 302 30d; |  | ||||||
|                 proxy_ignore_headers Expires Cache-Control Set-Cookie X-Accel-Expires; |  | ||||||
|                 proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; |  | ||||||
|                 proxy_connect_timeout 15s; |  | ||||||
|                 proxy_http_version 1.1; |  | ||||||
|                 proxy_set_header Connection ""; |  | ||||||
|                 # Transmit slice range to the backend |  | ||||||
|                 proxy_set_header Range $slice_range; |  | ||||||
|  |  | ||||||
|                 proxy_cache_lock on; |  | ||||||
|                 proxy_cache_lock_age 60s; |  | ||||||
|  |  | ||||||
|                 #proxy_pass http://$jellyfin:8096; |  | ||||||
|                 proxy_pass http://jellyfin_server; |  | ||||||
|                 proxy_cache_key "jellyvideo$uri?MediaSourceId=$arg_MediaSourceId&VideoCodec=$arg_VideoCodec&AudioCodec=$arg_AudioCodec&AudioStreamIndex=$arg_AudioStreamIndex&VideoBitrate=$arg_VideoBitrate&AudioBitrate=$arg_AudioBitrate&SubtitleMethod=$arg_SubtitleMethod&TranscodingMaxAudioChannels=$arg_TranscodingMaxAudioChannels&RequireAvc=$arg_RequireAvc&SegmentContainer=$arg_SegmentContainer&MinSegments=$arg_MinSegments&BreakOnNonKeyFrames=$arg_BreakOnNonKeyFrames&h264-profile=$h264Profile&h264-level=$h264Level&slicerange=$slice_range"; |  | ||||||
|  |  | ||||||
|                 add_header X-Cache-Status $upstream_cache_status; # This is only for debugging cache |  | ||||||
|         } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # All configuration options are documented at https://jellyfin.org/docs/general/networking/nginx/ |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| #upstream minecraft { |  | ||||||
| #    server minecraft:25565; |  | ||||||
| #} |  | ||||||
| # |  | ||||||
| #server { |  | ||||||
| #    listen 25566; |  | ||||||
| #    server_name minecraft.bensuperpc.org www.minecraft.bensuperpc.org; |  | ||||||
| #    location / { |  | ||||||
| #        proxy_pass minecraft; |  | ||||||
| #    } |  | ||||||
| #} |  | ||||||
|  |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| #include /etc/nginx/conf.d/sub/cache-proxy.conf; |  | ||||||
|  |  | ||||||
| upstream phpmyadmin_server { |  | ||||||
|         # ip_hash; |  | ||||||
|         server phpmyadmin:80; |  | ||||||
|         # server phpmyadmin:80 weight=1 max_fails=3 fail_timeout=30s; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # PHPmyadmin |  | ||||||
| server { |  | ||||||
|         listen 80; |  | ||||||
|         listen [::]:80; |  | ||||||
|         #listen 443; |  | ||||||
|         #listen [::]:443; |  | ||||||
|  |  | ||||||
|         server_name phpmyadmin.bensuperpc.org www.phpmyadmin.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         include /etc/nginx/conf.d/sub/gzip.conf; |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 proxy_pass http://phpmyadmin_server; |  | ||||||
|                 proxy_redirect off; |  | ||||||
|                 proxy_set_header X-Forwarded-Host $http_host; |  | ||||||
|                 proxy_set_header X-Forwarded-For  $remote_addr; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # resolver 8.8.8.8; |  | ||||||
| } |  | ||||||
| @@ -1,26 +0,0 @@ | |||||||
| upstream qbittorrent_server { |  | ||||||
|         # ip_hash; |  | ||||||
|         server qbittorrent:8080; |  | ||||||
|         # server qbittorrent:8080 weight=1 max_fails=3 fail_timeout=30s; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # PHPmyadmin |  | ||||||
| server { |  | ||||||
|         listen 80; |  | ||||||
|         listen [::]:80; |  | ||||||
|         #listen 443; |  | ||||||
|         #listen [::]:443; |  | ||||||
|  |  | ||||||
|         server_name qbittorrent.bensuperpc.org www.qbittorrent.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         include /etc/nginx/conf.d/sub/gzip.conf; |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 proxy_pass http://qbittorrent_server; |  | ||||||
|                 proxy_redirect off; |  | ||||||
|                 proxy_set_header X-Forwarded-Host $http_host; |  | ||||||
|                 proxy_set_header X-Forwarded-For  $remote_addr; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # resolver 8.8.8.8; |  | ||||||
| } |  | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| # The path to store the cache files, limit the folder to 100MB |  | ||||||
| fastcgi_cache_path /var/run/nginx-cache-fastcgi levels=1:2 keys_zone=WORDPRESS:100m inactive=120m max_size=1g use_temp_path=off; |  | ||||||
|  |  | ||||||
| # A unique request is defined by this cache key |  | ||||||
| fastcgi_cache_key "$scheme$request_method$host$request_uri"; |  | ||||||
|  |  | ||||||
| # Show the cached version if upstream gives a timeout or a HTTP 500 error |  | ||||||
| fastcgi_cache_use_stale error timeout invalid_header http_500; |  | ||||||
|  |  | ||||||
| # Revalidate items in the cache if they are update  |  | ||||||
| fastcgi_cache_revalidate on; |  | ||||||
|  |  | ||||||
| # Minimum time to store an item in the cache |  | ||||||
| fastcgi_cache_min_uses 3; |  | ||||||
|  |  | ||||||
| # Cache everything for 1 day |  | ||||||
| fastcgi_cache_valid 1d; |  | ||||||
|  |  | ||||||
| # Don't use the following headers to define the cache variables |  | ||||||
| fastcgi_ignore_headers Cache-Control Expires Set-Cookie; |  | ||||||
|  |  | ||||||
| # Some parts of this file are from |  | ||||||
| # https://gist.github.com/TrafeX/6d582b6d040702088722 |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| # The path to store the cache files, limit the folder to 100MB |  | ||||||
| proxy_cache_path /var/run/nginx-cache-proxy levels=1:2 keys_zone=PROXY:100m inactive=120m max_size=1g use_temp_path=off; |  | ||||||
|  |  | ||||||
| # A unique request is defined by this cache key |  | ||||||
| proxy_cache_key "$scheme$request_method$host$request_uri"; |  | ||||||
|  |  | ||||||
| # Show the cached version if upstream gives a timeout or a HTTP 500 error |  | ||||||
| proxy_cache_use_stale error timeout invalid_header http_500; |  | ||||||
|  |  | ||||||
| # Revalidate items in the cache if they are update  |  | ||||||
| proxy_cache_revalidate on; |  | ||||||
|  |  | ||||||
| # Minimum time to store an item in the cache |  | ||||||
| proxy_cache_min_uses 3; |  | ||||||
|  |  | ||||||
| # Cache everything for 1 day |  | ||||||
| proxy_cache_valid 1d; |  | ||||||
|  |  | ||||||
| # Don't use the following headers to define the cache variables |  | ||||||
| proxy_ignore_headers Cache-Control Expires Set-Cookie; |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| # The path to store the cache files, limit the folder to 100MB |  | ||||||
| uwsgi_cache_path /var/run/nginx-cache-uwsgi levels=1:2 keys_zone=UWSGI:100m inactive=120m max_size=1g use_temp_path=off; |  | ||||||
|  |  | ||||||
| # A unique request is defined by this cache key |  | ||||||
| uwsgi_cache_key "$scheme$request_method$host$request_uri"; |  | ||||||
|  |  | ||||||
| # Show the cached version if upstream gives a timeout or a HTTP 500 error |  | ||||||
| uwsgi_cache_use_stale error timeout invalid_header http_500; |  | ||||||
|  |  | ||||||
| # Revalidate items in the cache if they are update  |  | ||||||
| uwsgi_cache_revalidate on; |  | ||||||
|  |  | ||||||
| # Minimum time to store an item in the cache |  | ||||||
| uwsgi_cache_min_uses 3; |  | ||||||
|  |  | ||||||
| # Cache everything for 1 day |  | ||||||
| uwsgi_cache_valid 1d; |  | ||||||
|  |  | ||||||
| # Don't use the following headers to define the cache variables |  | ||||||
| uwsgi_ignore_headers Cache-Control Expires Set-Cookie; |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| # Compression config |  | ||||||
| gzip on; |  | ||||||
| gunzip on; |  | ||||||
|  |  | ||||||
| gzip_static on; |  | ||||||
| gzip_min_length 1000; |  | ||||||
| gzip_buffers 4 32k; |  | ||||||
| # gzip_http_version 1.1; |  | ||||||
| gzip_proxied any; |  | ||||||
| gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; |  | ||||||
| gzip_vary on; |  | ||||||
| gzip_comp_level 6; |  | ||||||
| gzip_disable "MSIE [1-6]\.(?!.*SV1)"; |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| # generated 2022-11-23, Mozilla Guideline v5.6, nginx 1.23, OpenSSL 1.1.1k, modern configuration |  | ||||||
| # https://ssl-config.mozilla.org/#server=nginx&version=1.23&config=modern&openssl=1.1.1k&guideline=5.6 |  | ||||||
|  |  | ||||||
| ssl_session_cache shared:le_nginx_SSL:10m; |  | ||||||
| ssl_session_timeout 1440m; |  | ||||||
| ssl_session_tickets off; |  | ||||||
|  |  | ||||||
| ssl_protocols TLSv1.3; |  | ||||||
| ssl_prefer_server_ciphers off; |  | ||||||
|  |  | ||||||
| # OCSP stapling |  | ||||||
| ssl_stapling on; |  | ||||||
| ssl_stapling_verify on; |  | ||||||
| @@ -1,161 +0,0 @@ | |||||||
| include /etc/nginx/conf.d/sub/cache-fastcgi.conf; |  | ||||||
|  |  | ||||||
| # All upstream serveur |  | ||||||
| upstream wordpress_server { |  | ||||||
|         # ip_hash; |  | ||||||
|         server wordpress:9000; |  | ||||||
|         # server wordpress:9000 weight=1 max_fails=3 fail_timeout=30s; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Redirect all http requests to the main server wordpress_server |  | ||||||
| server { |  | ||||||
|         listen 80; |  | ||||||
|         listen [::]:80; |  | ||||||
|  |  | ||||||
|         server_name wordpress.bensuperpc.org www.wordpress.bensuperpc.org bensuperpc.org www.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         location ~ /.well-known/acme-challenge { |  | ||||||
|                 allow all; |  | ||||||
|                 root /var/www/wordpress; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 return 301 https://$host$request_uri; |  | ||||||
|         } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # Main server wordpress_server |  | ||||||
| server { |  | ||||||
|         listen 443 ssl http2; |  | ||||||
|         listen [::]:443 ssl http2; |  | ||||||
|         server_name wordpress.bensuperpc.org www.wordpress.bensuperpc.org bensuperpc.org www.bensuperpc.org; |  | ||||||
|  |  | ||||||
|         root /var/www/wordpress; |  | ||||||
|         index index.php index.html index.htm; |  | ||||||
|  |  | ||||||
|         # Keepalive for 70 seconds |  | ||||||
|         keepalive_timeout 70; |  | ||||||
|  |  | ||||||
|         # Number of requests per connection |  | ||||||
|         keepalive_requests 100; |  | ||||||
|  |  | ||||||
|         reset_timedout_connection on; |  | ||||||
|  |  | ||||||
|         # Increase proxy buffers for large requests |  | ||||||
|         proxy_buffer_size 128k; |  | ||||||
|         proxy_buffers 4 256k; |  | ||||||
|         proxy_busy_buffers_size 256k; |  | ||||||
|  |  | ||||||
|         fastcgi_buffer_size 128k; |  | ||||||
|         fastcgi_buffers 256 16k; |  | ||||||
|         fastcgi_busy_buffers_size 256k; |  | ||||||
|         fastcgi_temp_file_write_size 256k; |  | ||||||
|  |  | ||||||
|         # Upload limit |  | ||||||
|         client_max_body_size 50m; |  | ||||||
|         client_body_buffer_size 128k; |  | ||||||
|  |  | ||||||
|         # Initialize the variable that specified to skip the cache |  | ||||||
|         set $skip_cache 0; |  | ||||||
|  |  | ||||||
|         # POST requests and url's with a query string should always skip cache |  | ||||||
|         if ($request_method = POST) { |  | ||||||
|                 set $skip_cache 1; |  | ||||||
|         } |  | ||||||
|         if ($query_string != "") { |  | ||||||
|                 set $skip_cache 1; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # Don't cache url's containing the following segments |  | ||||||
|         if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { |  | ||||||
|                 set $skip_cache 1; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # Don't use the cache for logged in users or recent commenters |  | ||||||
|         if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { |  | ||||||
|                 set $skip_cache 1; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         server_tokens off; |  | ||||||
|  |  | ||||||
|         include /etc/nginx/conf.d/sub/gzip.conf; |  | ||||||
|          |  | ||||||
|         # All things related to SSL |  | ||||||
|         ssl_certificate /etc/letsencrypt/live/bensuperpc.org/fullchain.pem; |  | ||||||
|         ssl_certificate_key /etc/letsencrypt/live/bensuperpc.org/privkey.pem; |  | ||||||
|         ssl_trusted_certificate /etc/letsencrypt/live/bensuperpc.org/chain.pem; |  | ||||||
|  |  | ||||||
|         include /etc/nginx/conf.d/sub/options-ssl-nginx.conf; |  | ||||||
|  |  | ||||||
|         # Logging |  | ||||||
|         access_log /var/log/nginx/wordpress.access.log; |  | ||||||
|         error_log  /var/log/nginx/wordpress.error.log; |  | ||||||
|  |  | ||||||
|         add_header X-Frame-Options "SAMEORIGIN" always; |  | ||||||
|         add_header X-XSS-Protection "1; mode=block" always; |  | ||||||
|         add_header X-Content-Type-Options "nosniff" always; |  | ||||||
|         add_header Referrer-Policy "no-referrer-when-downgrade" always; |  | ||||||
|         add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always; |  | ||||||
|         add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; |  | ||||||
|  |  | ||||||
|         location / { |  | ||||||
|                 try_files $uri $uri/ /index.php$is_args$args; |  | ||||||
|                 #  try_files $uri $uri/ /index.php?$args; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         location ~ \.php$ { |  | ||||||
|                 try_files $uri =404; |  | ||||||
|                 fastcgi_split_path_info ^(.+\.php)(/.+)$; |  | ||||||
|                 fastcgi_pass wordpress_server; |  | ||||||
|                 fastcgi_index index.php; |  | ||||||
|                 include fastcgi_params; |  | ||||||
|  |  | ||||||
|                 # Necessary to avoid 404 error when changing the wordpress path |  | ||||||
|                 #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |  | ||||||
|                 fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; |  | ||||||
|  |  | ||||||
|                 fastcgi_param PATH_INFO $fastcgi_path_info; |  | ||||||
|                  |  | ||||||
|                 fastcgi_intercept_errors on; |  | ||||||
|  |  | ||||||
|                 # Don't cache when $skip_cache is true |  | ||||||
|                 fastcgi_cache_bypass $skip_cache; |  | ||||||
|                 fastcgi_no_cache $skip_cache; |  | ||||||
|  |  | ||||||
|                 # Use the WORDPRESS zone |  | ||||||
|                 fastcgi_cache WORDPRESS; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # Don't write to accesslog for these files |  | ||||||
|         location = /favicon.ico { |  | ||||||
|                 log_not_found off; |  | ||||||
|                 access_log off; |  | ||||||
|         } |  | ||||||
|         location = /robots.txt { |  | ||||||
|                 allow all; |  | ||||||
|                 log_not_found off; |  | ||||||
|                 access_log off; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # Media files with one of these extensions should be cached by the browser |  | ||||||
|         location ~* \.(xml|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { |  | ||||||
|                 expires max; |  | ||||||
|                 log_not_found off; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         # Deny access to .* files |  | ||||||
|         location ~ /\. { |  | ||||||
|                 deny all; |  | ||||||
|                 access_log off; |  | ||||||
|                 log_not_found off; |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         # Add cache status header for easy debugging |  | ||||||
|         add_header X-cache $upstream_cache_status; |  | ||||||
|  |  | ||||||
|         # From cat /etc/resolv.conf |  | ||||||
|         resolver 8.8.8.8; |  | ||||||
|  |  | ||||||
|         # Some parts of this file are from |  | ||||||
|         # https://gist.github.com/TrafeX/6d582b6d040702088722 |  | ||||||
| } |  | ||||||
| @@ -1,32 +0,0 @@ | |||||||
|  |  | ||||||
| user  nginx; |  | ||||||
| worker_processes  auto; |  | ||||||
|  |  | ||||||
| error_log  /var/log/nginx/error.log notice; |  | ||||||
| pid        /var/run/nginx.pid; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| events { |  | ||||||
|     worker_connections  1024; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| http { |  | ||||||
|     include       /etc/nginx/mime.types; |  | ||||||
|     default_type  application/octet-stream; |  | ||||||
|  |  | ||||||
|     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' |  | ||||||
|                       '$status $body_bytes_sent "$http_referer" ' |  | ||||||
|                       '"$http_user_agent" "$http_x_forwarded_for"'; |  | ||||||
|  |  | ||||||
|     access_log  /var/log/nginx/access.log  main; |  | ||||||
|  |  | ||||||
|     sendfile        on; |  | ||||||
|     #tcp_nopush     on; |  | ||||||
|  |  | ||||||
|     keepalive_timeout  65; |  | ||||||
|  |  | ||||||
|     #gzip  on; |  | ||||||
|  |  | ||||||
|     include /etc/nginx/conf.d/*.conf; |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user