mirror of
				https://github.com/bensuperpc/infrastructure.git
				synced 2025-10-26 06:46:21 +01:00 
			
		
		
		
	Compare commits
	
		
			6 Commits
		
	
	
		
			1f96c00bfc
			...
			mainold
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| cd2862a358 | |||
| 13c2b7df19 | |||
| 20fe33f7d5 | |||
| c2f8075fd7 | |||
| b13654df15 | |||
| 66b014c076 | 
| @@ -1,15 +0,0 @@ | |||||||
| name: Build And Test |  | ||||||
| run-name: ${{ gitea.actor }} is runs ci pipeline |  | ||||||
| on: [ push ] |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   build: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     steps: |  | ||||||
|       - run: ls |  | ||||||
| publish: |  | ||||||
|     runs-on: cth-ubuntu-latest |  | ||||||
|     needs: build |  | ||||||
|     if: gitea.ref == 'refs/heads/main' |  | ||||||
|     steps: |  | ||||||
|       - run: ls |  | ||||||
							
								
								
									
										1
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | |||||||
| github: bensuperpc  |  | ||||||
							
								
								
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,38 +0,0 @@ | |||||||
| --- |  | ||||||
| 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
									
									
								
							
							
						
						
									
										10
									
								
								.github/ISSUE_TEMPLATE/custom.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,10 +0,0 @@ | |||||||
| --- |  | ||||||
| name: Custom issue template |  | ||||||
| about: Describe this issue template's purpose here. |  | ||||||
| title: '' |  | ||||||
| labels: '' |  | ||||||
| assignees: '' |  | ||||||
|  |  | ||||||
| --- |  | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,20 +0,0 @@ | |||||||
| --- |  | ||||||
| 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
									
									
								
							
							
						
						
									
										6
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| version: 2 |  | ||||||
| updates: |  | ||||||
|   - package-ecosystem: "github-actions" |  | ||||||
|     directory: "/" |  | ||||||
|     schedule: |  | ||||||
|       interval: "daily"  |  | ||||||
							
								
								
									
										46
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,46 +0,0 @@ | |||||||
| 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 image" |  | ||||||
|         run: make update-docker |  | ||||||
|       - name: "Build server" |  | ||||||
|         run: make build |  | ||||||
| #      - name: "Start server" |  | ||||||
| #        run: make start |  | ||||||
|       - name: "Logs server" |  | ||||||
|         run: make logs |  | ||||||
|       - name: "State server" |  | ||||||
|         run: make state |  | ||||||
|       - name: "Stop server" |  | ||||||
|         run: make stop |  | ||||||
|       - name: "Down server" |  | ||||||
|         run: make down |  | ||||||
|       - name: "Clean server" |  | ||||||
|         run: make clean |  | ||||||
|       - name: "Purge server" |  | ||||||
|         run: make purge |  | ||||||
							
								
								
									
										31
									
								
								.github/workflows/submodule-update.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								.github/workflows/submodule-update.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,31 +0,0 @@ | |||||||
| 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" |  | ||||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1 +1,2 @@ | |||||||
|  | *.env | ||||||
|  | **/*.env | ||||||
							
								
								
									
										44
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,8 +1,15 @@ | |||||||
| #////////////////////////////////////////////////////////////// | #////////////////////////////////////////////////////////////// | ||||||
|  | #//   ____                                                   // | ||||||
|  | #//  | __ )  ___ _ __  ___ _   _ _ __   ___ _ __ _ __   ___  // | ||||||
|  | #//  |  _ \ / _ \ '_ \/ __| | | | '_ \ / _ \ '__| '_ \ / __| // | ||||||
|  | #//  | |_) |  __/ | | \__ \ |_| | |_) |  __/ |  | |_) | (__  // | ||||||
|  | #//  |____/ \___|_| |_|___/\__,_| .__/ \___|_|  | .__/ \___| // | ||||||
|  | #//                             |_|             |_|          // | ||||||
|  | #////////////////////////////////////////////////////////////// | ||||||
| #//                                                          // | #//                                                          // | ||||||
| #//  Infrastructure, 2024                                    // | #//  Script, 2022                                            // | ||||||
| #//  Created: 14, April, 2022                                // | #//  Created: 14, April, 2022                                // | ||||||
| #//  Modified: 05, May, 2024                                 // | #//  Modified: 17, March, 2023                               // | ||||||
| #//  file: -                                                 // | #//  file: -                                                 // | ||||||
| #//  -                                                       // | #//  -                                                       // | ||||||
| #//  Source:                                                 // | #//  Source:                                                 // | ||||||
| @@ -13,61 +20,56 @@ | |||||||
|  |  | ||||||
| DOCKER := docker | DOCKER := docker | ||||||
|  |  | ||||||
| PROFILES := caddy wordpress adminer ghost syncthing uptime-kuma jellyfin qbittorrent psitransfer gitea it-tools privatebin homepage watchtower | PROFILES := wp_db wordpress webserver certbot phpmyadmin qbittorrent jellyfin | ||||||
| PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) | PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) | ||||||
|  |  | ||||||
| # gitea-runner transmission |  | ||||||
|  |  | ||||||
| COMPOSE_FILES :=  $(shell find . -name 'docker-compose*.yml' -type f | sed -e 's/^/--file /') | COMPOSE_FILES :=  $(shell find docker-compose* | sed -e 's/^/--file /') | ||||||
|  |  | ||||||
| COMPOSE_DIR := --project-directory ./infrastructure | AUTHOR := bensuperpc | ||||||
|  |  | ||||||
| .PHONY: build all | .PHONY: build all | ||||||
| all: start | all: start | ||||||
|  |  | ||||||
| .PHONY: build | .PHONY: build | ||||||
| build: | build: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) build | 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) build | ||||||
|  |  | ||||||
| .PHONY: start | .PHONY: start | ||||||
| start: | start: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) up -d | 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) up -d | ||||||
|  |  | ||||||
| .PHONY: start-at | .PHONY: start-at | ||||||
| start-at: | start-at: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) up | 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) up | ||||||
|  |  | ||||||
| .PHONY: docker-check | .PHONY: docker-check | ||||||
| docker-check: | docker-check: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) config | 	docker compose $(COMPOSE_FILES) $(PROFILES_CMD) config | ||||||
|  |  | ||||||
| .PHONY: stop | .PHONY: stop | ||||||
| stop: down | stop: down | ||||||
|  |  | ||||||
| .PHONY: down | .PHONY: down | ||||||
| down: | down: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) down | 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) down | ||||||
|  |  | ||||||
| .PHONY: restart | .PHONY: restart | ||||||
| restart: stop start | restart: stop start | ||||||
|  |  | ||||||
| .PHONY: logs | .PHONY: logs | ||||||
| logs: | logs: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) logs | 	docker compose $(COMPOSE_FILES) logs | ||||||
|  |  | ||||||
| .PHONY: state | .PHONY: state | ||||||
| state: | state: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) ps | 	docker compose $(COMPOSE_FILES) ps | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) top | 	docker compose $(COMPOSE_FILES) top | ||||||
|  |  | ||||||
| .PHONY: update-docker |  | ||||||
| update-docker: |  | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) pull |  | ||||||
|  |  | ||||||
| .PHONY: update | .PHONY: update | ||||||
| update: update-docker | update: | ||||||
| 	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: | ||||||
| @@ -75,4 +77,4 @@ clean: | |||||||
|  |  | ||||||
| .PHONY: purge | .PHONY: purge | ||||||
| purge: | purge: | ||||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) down -v --rmi all | 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) down -v --rmi all | ||||||
							
								
								
									
										214
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										214
									
								
								README.md
									
									
									
									
									
								
							| @@ -5,25 +5,24 @@ _My personal infrastructure for my servers and services._ | |||||||
| ## 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 caddy and docker-compose to run my services (And many other things). | It uses Nginx and docker-compose to run my services (And many other things). | ||||||
| It's a **work in progress**, and I'm still learning a lot about it. | 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. | ||||||
|  |  | ||||||
| ## Features | ## Features | ||||||
|  |  | ||||||
| - [x] caddy 2 reverse proxy | - [x] Nginx reverse proxy | ||||||
| - [x] Docker / docker-compose | - [x] Docker / docker-compose | ||||||
| - [x] Caddy | - [x] Letsencrypt / Certbot | ||||||
| - [x] Wordpress (Via FASTCGI/caddy) | - [x] Wordpress (Via FASTCGI/NGINX) | ||||||
| - [x] Adminer (MariaDB) | - [x] PHPMyAdmin (MariaDB) | ||||||
| - [x] Jellyfin (Media server) | - [x] PGAdmin (PostgreSQL) | ||||||
| - [x] Gitea (Git server) | - [x] Qbittorrent | ||||||
| - [x] Uptime Kuma (Monitoring) | - [x] Jellyfin | ||||||
| - [x] qbittorrent and transmission (Torrent client/server) | - [ ] Gitea | ||||||
| - [x] SyncThing (File synchronization) | - [ ] Mastodon | ||||||
| - [x] PsiTransfer (File sharing) | - [ ] Minecraft server (Hyperworld v2) | ||||||
| - [x] it-tools (Tools for IT) | - [ ] SSL for all subdomains / Services (Not just the main domain) | ||||||
| - [x] Privatebin (Pastebin) |  | ||||||
|  |  | ||||||
| ## Screenshots | ## Screenshots | ||||||
|  |  | ||||||
| @@ -35,9 +34,7 @@ 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, 443, 2222 on your router](http://192.168.0.1/) | - [Open port 80 and 443 on your router](http://192.168.0.1/) (I use a Orange 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 | ||||||
|  |  | ||||||
| @@ -53,100 +50,106 @@ Go to the folder | |||||||
| cd infrastructure | cd infrastructure | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Configure the domain | ### Get the SSL certificate | ||||||
|  |  | ||||||
| For all **bensuperpc.org**, you need to replace it with your domain, example: **mydomain.com**, so the same for **bensuperpc.com** ect... | For all **bensuperpc.org**, you need to replace it with your domain, example: **bensuperpc.com** | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/mydomain.com/g' | find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/bensuperpc.com/g' | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Check if all bensuperpc.* are replaced by your domain in [Caddyfile](caddy/wordpress/Caddyfile) | Keep original config file | ||||||
|  |  | ||||||
| And then, caddy will generate the certificate for you and renew it automatically :D |  | ||||||
|  |  | ||||||
| | Domain name | Type | Description | |  | ||||||
| | --- | --- | --- | |  | ||||||
| | [bensuperpc.org](https://bensuperpc.org) | Main | Main domain | |  | ||||||
| | [adminer.bensuperpc.org](https://adminer.bensuperpc.org) | Sub | Adminer for MariaDB for wordpress only | |  | ||||||
| | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | Sub | Uptime Kuma for monitoring | |  | ||||||
| | [qbittorrent.bensuperpc.org](https://qbittorrent.bensuperpc.org) | Sub | Torrent client/server | |  | ||||||
| | [transmission.bensuperpc.org](https://transmission.bensuperpc.org) | Sub | Torrent client/server | |  | ||||||
| | [git.bensuperpc.org](https://git.bensuperpc.org) | Sub | Gitea for git | |  | ||||||
| | [link.bensuperpc.org](https://link.bensuperpc.org) | Sub | For link shortener | |  | ||||||
| | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org) | Sub | Jellyfin for media server | |  | ||||||
| | [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org) | Sub | SyncThing for file synchronization | |  | ||||||
| | [psitransfer.bensuperpc.org](https://psitransfer.bensuperpc.org) | Sub | PsiTransfer for file sharing | |  | ||||||
| | [it-tools.bensuperpc.org](https://it-tools.bensuperpc.org) | Sub | Tools for IT | |  | ||||||
| | [privatebin.bensuperpc.org](https://privatebin.bensuperpc.org) | Sub | Pastebin | |  | ||||||
| | 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 |  | ||||||
|  |  | ||||||
| You need to configure the infrastructure with your own configuration. |  | ||||||
|  |  | ||||||
| You can generate a password with 32 characters: |  | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| openssl rand -base64 32 | cp -r nginx/conf.d nginx/conf.d-original | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For the [wordpress.env](infrastructure/wordpress/env/wordpress.env) file, you need to change the password and user for the database. | Remove the old config file | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| WORDPRESS_DB_USER=bensuperpc | rm -fr nginx/nginx-conf | ||||||
| WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| WORDPRESS_DB_NAME=wordpress |  | ||||||
| WORDPRESS_DB_HOST=wordpress_db:3306 |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [wordpress_db.env](infrastructure/wordpress/env/wordpress_db.env) file, you need to change the password(s) and user for the database. | Copy _nginx-conf-cert_ to _nginx-conf_, for temporary use to get the SSL certificate | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | cp -r nginx/conf.d-cert nginx/conf.d | ||||||
| MARIADB_USER=bensuperpc |  | ||||||
| MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| MARIADB_DATABASE=wordpress |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [adminer.env](infrastructure/wordpress/env/adminer.env) file, you need to change the password(s) and user for the database. | Replace certbot commands in _docker-compose.yml_, and replace _bensuperpc.org_ by your domain | ||||||
|  |  | ||||||
|  | ```yaml | ||||||
|  |     command: > | ||||||
|  |       certonly --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --keep-until-expiring --webroot  | ||||||
|  |       --webroot-path=/var/www/wordpress --domain bensuperpc.org --domain www.bensuperpc.org | ||||||
|  |       --webroot-path=/var/www/jellyfin --domain jellyfin.bensuperpc.org --domain www.jellyfin.bensuperpc.org | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | With to get the SSL certificate | ||||||
|  |  | ||||||
|  | ```yaml | ||||||
|  |     command: > | ||||||
|  |       certonly --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --staging --webroot | ||||||
|  |       --webroot-path=/var/www/wordpress --domain bensuperpc.org --domain www.bensuperpc.org | ||||||
|  |       --webroot-path=/var/www/jellyfin --domain jellyfin.bensuperpc.org --domain www.jellyfin.bensuperpc.org  | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Run the docker-compose and exit with CTRL+C and when you have the SSL certificate | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | make start-at | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| ADMINER_DEFAULT_SERVER=wordpress_db |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [gitea.env](infrastructure/gitea/env/gitea.env) file, you need to change the password(s) and user for the database. | Replace certbot commands in _docker-compose.yml_ to update and renew the SSL certificate | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| GITEA__database__DB_TYPE=mysql |     command: > | ||||||
| GITEA__database__HOST=database_gitea:3306 |       certonly --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --force-renewal --webroot | ||||||
| GITEA__database__NAME=gitea |       --webroot-path=/var/www/wordpress --domain bensuperpc.org --domain www.bensuperpc.org | ||||||
| GITEA__database__USER=bensuperpc |       --webroot-path=/var/www/jellyfin --domain jellyfin.bensuperpc.org --domain www.jellyfin.bensuperpc.org  | ||||||
| GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j |  | ||||||
| GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [gitea_db.env](infrastructure/gitea/env/gitea_db.env) file, you need to change the password(s) and user for the database. | Run the docker-compose to update and renew the SSL certificate and exit with CTRL+C when you have the SSL certificate | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | make start-at | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j |  | ||||||
| MYSQL_DATABASE=gitea |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [psitransfer.env](infrastructure/psitransfer/env/psitransfer.env) file, you need to change the password(s) and user for the database. | Now you can replace the certbot commands in _docker-compose.yml_ with the original one | ||||||
|  |  | ||||||
|  | ```yaml | ||||||
|  |     command: > | ||||||
|  |       certonly --email bensuperpc@bensuperpc.fr --agree-tos --rsa-key-size 4096 --no-eff-email --verbose --noninteractive --keep-until-expiring --webroot  | ||||||
|  |       --webroot-path=/var/www/wordpress --domain bensuperpc.org --domain www.bensuperpc.org | ||||||
|  |       --webroot-path=/var/www/jellyfin --domain jellyfin.bensuperpc.org --domain www.jellyfin.bensuperpc.org | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Remove the cert config file | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | rm -fr nginx/conf.d | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | Copy _nginx-conf-original_ to _nginx-conf_, for definitive use | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | cp -r nginx/conf.d-original nginx/conf.d | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Now you start services | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | make start-at | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### Flask website | ||||||
|  |  | ||||||
|  | You can follow the [README.md](bensuperpc_website/README.md) to install the Flask website. | ||||||
|  |  | ||||||
|  | ### Wordpress website | ||||||
|  |  | ||||||
|  | For the Wordpress website, you can configure in GUI when you go to the website. | ||||||
|  |  | ||||||
| ### Start the infrastructure | ### Start the infrastructure | ||||||
|  |  | ||||||
| Start the website with: | Start the website with: | ||||||
| @@ -161,35 +164,16 @@ Stop the website with (or CTRL+C with the previous command): | |||||||
| make stop | make stop | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Remove countainers with: | ## URL | ||||||
|  |  | ||||||
| ```sh | You can access to the website with: | ||||||
| make down |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### All services | - [bensuperpc.org](https://bensuperpc.org) and [www.bensuperpc.org](https://www.bensuperpc.org) (Wordpress for now) | ||||||
|  | - [phpmyadmin.bensuperpc.org](http://phpmyadmin.bensuperpc.org) and [www.phpmyadmin.bensuperpc.org](http://www.phpmyadmin.bensuperpc.org) (PHPMyAdmin for MariaDB) | ||||||
|  | - [pgadmin.bensuperpc.org](http://pgadmin.bensuperpc.org) and [www.pgadmin.bensuperpc.org](http://www.pgadmin.bensuperpc.org) (PGAdmin for PostgreSQL) | ||||||
|  | - [qbittorrent.bensuperpc.org](http://qbittorrent.bensuperpc.org) and [www.qbittorrent.bensuperpc.org](http://www.qbittorrent.bensuperpc.org) (Qbittorrent) | ||||||
|  |  | ||||||
| You can find all service on this table: | ## Build with | ||||||
|  |  | ||||||
| | 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) | |  | ||||||
| | qbittorrent | qbittorrent server | [qbittorrent.bensuperpc.org](https://qbittorrent.bensuperpc.org) | |  | ||||||
| | transmission | transmission server | [transmission.bensuperpc.org](https://transmission.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) | |  | ||||||
| | PsiTransfer | PsiTransfer for file sharing | [psitransfer.bensuperpc.org](https://psitransfer.bensuperpc.org) | |  | ||||||
| | it-tools | Tools for IT | [it-tools.bensuperpc.org](https://it-tools.bensuperpc.org) | |  | ||||||
| | Privatebin | Pastebin | [privatebin.bensuperpc.org](https://privatebin.bensuperpc.org) | |  | ||||||
|  |  | ||||||
| You can disable some services by removing the service name in PROFILES variable in the [Makefile](Makefile) file. |  | ||||||
|  |  | ||||||
| To enable the gitea CI: https://medium.com/@lokanx/how-to-build-docker-containers-using-gitea-runners-600729555e07 |  | ||||||
|  |  | ||||||
| ## Sources |  | ||||||
|  |  | ||||||
| - [Wordpress](https://wordpress.org/) | - [Wordpress](https://wordpress.org/) | ||||||
| - [Gnu Make](https://www.gnu.org/software/make/) | - [Gnu Make](https://www.gnu.org/software/make/) | ||||||
| @@ -198,23 +182,15 @@ To enable the gitea CI: https://medium.com/@lokanx/how-to-build-docker-container | |||||||
| - [Docker](https://www.docker.com/) | - [Docker](https://www.docker.com/) | ||||||
| - [Docker Compose](https://docs.docker.com/compose/) | - [Docker Compose](https://docs.docker.com/compose/) | ||||||
| - [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) | - [Digital Ocean](https://www.digitalocean.com/) | ||||||
| - [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](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose) | ||||||
| - [Letsencrypt](https://letsencrypt.org/) | - [PGAmin](https://www.pgadmin.org/) | ||||||
| - [Caddy](https://caddyserver.com/) | - [Qbittorrent](https://www.qbittorrent.org/) | ||||||
| - [Adminer](https://www.adminer.org/) |  | ||||||
| - [Uptime Kuma](https://uptime-kuma.com/) |  | ||||||
| - [qbittorrent](https://www.qbittorrent.org/) |  | ||||||
| - [Transmission](https://transmissionbt.com/) |  | ||||||
| - [Gitea](https://gitea.io/) |  | ||||||
| - [Jellyfin](https://jellyfin.org/) | - [Jellyfin](https://jellyfin.org/) | ||||||
| - [SyncThing](https://syncthing.net/) | - [Letsencrypt](https://letsencrypt.org/) | ||||||
| - [PsiTransfer](https://psitransfer.com/) | - [Certbot](https://certbot.eff.org/) | ||||||
| - [It-tools](https://github.com/CorentinTh/it-tools) | - [Nginx](https://www.nginx.com/) | ||||||
| - [Privatebin](https://github.com/PrivateBin/PrivateBin) | - [UWSGI](https://uwsgi-docs.readthedocs.io/en/latest/) | ||||||
| - [ghost](https://ghost.org) |  | ||||||
| - [Homepage Tuto](https://belginux.com/installer-homepage-avec-docker/) |  | ||||||
| - [Imagisphe](https://imagisphe.re/) |  | ||||||
|  |  | ||||||
| ## License | ## License | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										32
									
								
								docker-compose.certbot.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								docker-compose.certbot.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | version: "3.9" | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   certbot: | ||||||
|  |     depends_on: | ||||||
|  |       - webserver | ||||||
|  |     image: certbot/certbot:v2.5.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 | ||||||
							
								
								
									
										48
									
								
								docker-compose.divers.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								docker-compose.divers.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | 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 | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
							
								
								
									
										6
									
								
								docker-compose.network.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docker-compose.network.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | version: "3.9" | ||||||
|  |  | ||||||
|  | networks: | ||||||
|  |   app-network: | ||||||
|  |     driver: bridge | ||||||
|  |     name: app-network | ||||||
							
								
								
									
										24
									
								
								docker-compose.nginx.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								docker-compose.nginx.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | version: "3.9" | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   webserver: | ||||||
|  |     depends_on: | ||||||
|  |       - wordpress | ||||||
|  |     image: nginx:1.24.0 | ||||||
|  |     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 | ||||||
							
								
								
									
										15
									
								
								docker-compose.volume.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								docker-compose.volume.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										63
									
								
								docker-compose.wordpress.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								docker-compose.wordpress.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | version: "3.9" | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   wp_db: | ||||||
|  |     image: mariadb:10.10.3 | ||||||
|  |     container_name: wp_db | ||||||
|  |     profiles: | ||||||
|  |       - wp_db | ||||||
|  |     restart: unless-stopped | ||||||
|  |     env_file:  | ||||||
|  |       - env/wp_database.env | ||||||
|  |     volumes:  | ||||||
|  |       - dbdata:/var/lib/mysql | ||||||
|  |     networks: | ||||||
|  |       - app-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  |   wordpress: | ||||||
|  |     depends_on:  | ||||||
|  |       - wp_db | ||||||
|  |     image: wordpress:6.2.0-fpm | ||||||
|  |     container_name: wordpress | ||||||
|  |     profiles: | ||||||
|  |       - wordpress | ||||||
|  |     restart: unless-stopped | ||||||
|  |     env_file:  | ||||||
|  |       - env/wordpress.env | ||||||
|  |     volumes: | ||||||
|  |       - wordpress:/var/www/html | ||||||
|  |     networks: | ||||||
|  |       - app-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  | #    cap_drop: | ||||||
|  | #        - ALL | ||||||
|  | #    cap_add: | ||||||
|  | #      - SETUID | ||||||
|  | #      - SETGID | ||||||
|  | #      - DAC_OVERRIDE | ||||||
|  | #      - NET_BIND_SERVICE | ||||||
|  | #      - NET_RAW | ||||||
|  | #      - CAP_CHOWN | ||||||
|  |   phpmyadmin: | ||||||
|  |     image: phpmyadmin:5.2.0 | ||||||
|  |     container_name: phpmyadmin | ||||||
|  |     profiles: | ||||||
|  |       - phpmyadmin | ||||||
|  |     restart: unless-stopped | ||||||
|  |     env_file:  | ||||||
|  |       - env/phpmyadmin.env | ||||||
|  |     depends_on: | ||||||
|  |       - wp_db | ||||||
|  |     networks: | ||||||
|  |       - app-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   wordpress: | ||||||
|  |     name: wordpress | ||||||
|  |   dbdata: | ||||||
|  |     name: dbdata | ||||||
							
								
								
									
										4
									
								
								env/flask_database.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/flask_database.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | POSTGRES_HOST_AUTH_METHOD=trust | ||||||
|  | POSTGRES_USER=bensuperpc | ||||||
|  | POSTGRES_PASSWORD=nPRh270dKH3hz%6HS2$X%8F3fqoQ*Fex | ||||||
|  | POSTGRES_DB=website | ||||||
							
								
								
									
										7
									
								
								env/flask_website.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								env/flask_website.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										3
									
								
								env/pgadmin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								env/pgadmin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | PGADMIN_DEFAULT_EMAIL=bensuperpc@bensuperpc.org | ||||||
|  | PGADMIN_DEFAULT_PASSWORD=LmRVf9DY291ez7B^^%2RntHcsCrJ5fQ! | ||||||
|  | #PGADMIN_ENABLE_TLS | ||||||
							
								
								
									
										4
									
								
								env/phpmyadmin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/phpmyadmin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | MYSQL_ROOT_PASSWORD=g1qQWxTXyFXIKpAfbE0h5bxn&prr4zfd | ||||||
|  | MYSQL_USER=bensuperpc | ||||||
|  | MYSQL_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt | ||||||
|  | PMA_HOST=db | ||||||
							
								
								
									
										4
									
								
								env/wordpress.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/wordpress.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | WORDPRESS_DB_USER=bensuperpc | ||||||
|  | WORDPRESS_DB_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt | ||||||
|  | WORDPRESS_DB_NAME=wordpress | ||||||
|  | WORDPRESS_DB_HOST=wp_db:3306 | ||||||
							
								
								
									
										4
									
								
								env/wp_database.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/wp_database.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | MARIADB_ROOT_PASSWORD=g1qQWxTXyFXIKpAfbE0h5bxn&prr4zfd | ||||||
|  | MARIADB_USER=bensuperpc | ||||||
|  | MARIADB_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt | ||||||
|  | MARIADB_DATABASE=wordpress | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| { |  | ||||||
| 	email bensuperpc@gmail.com |  | ||||||
| 	key_type p384 |  | ||||||
|  |  | ||||||
| 	log { |  | ||||||
| 		output file /data/logs/access.log |  | ||||||
| 		format json |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| import bensuperpc.org/* |  | ||||||
| import bensuperpc.com/* |  | ||||||
| import bensuperpc.net/* |  | ||||||
| import bensuperpc.ovh/* |  | ||||||
| import bensuperpc.fr/* |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| bensuperpc.com {   |  | ||||||
|   	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.com {   |  | ||||||
|   	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| bensuperpc.fr { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.fr { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| bensuperpc.net { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.net { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| git.bensuperpc.net { |  | ||||||
| 	redir https://git.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| jellyfin.bensuperpc.net { |  | ||||||
| 	redir https://jellyfin.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| uptimekuma.bensuperpc.net { |  | ||||||
| 	redir https://uptimekuma.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,139 +0,0 @@ | |||||||
| 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 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| qbittorrent.bensuperpc.org { |  | ||||||
| 	redir https://torrent.bensuperpc.org permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| transmission.bensuperpc.org { |  | ||||||
| 	reverse_proxy transmission:9091 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| gitea.bensuperpc.org { |  | ||||||
| 	redir https://git.bensuperpc.org permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| git.bensuperpc.org { |  | ||||||
| 	reverse_proxy gitea:3000 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| jellyfin.bensuperpc.org { |  | ||||||
| 	reverse_proxy jellyfin:8096 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| transfer.bensuperpc.org { |  | ||||||
| 	reverse_proxy psitransfer:3000 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| psitransfer.bensuperpc.org { |  | ||||||
| 	redir https://transfer.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| syncthing.bensuperpc.org { |  | ||||||
| 	reverse_proxy syncthing:8384 { |  | ||||||
| 		header_up Host {upstream_hostport} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| it-tools.bensuperpc.org { |  | ||||||
| 	reverse_proxy it-tools:80 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| tools.bensuperpc.org { |  | ||||||
| 	redir https://it-tools.bensuperpc.org permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| privatebin.bensuperpc.org { |  | ||||||
| 	reverse_proxy privatebin:8080 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| pastebin.bensuperpc.org { |  | ||||||
| 	redir https://privatebin.bensuperpc.org permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| homepage.bensuperpc.org { |  | ||||||
| 	reverse_proxy homepage:3000 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| ghost.bensuperpc.org { |  | ||||||
| 	reverse_proxy ghost:2368 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| link.bensuperpc.org { |  | ||||||
| 	# TODO: Use service with database |  | ||||||
| 	# Friendly links |  | ||||||
| 	redir /gnous https://gnous.eu permanent |  | ||||||
| 	redir /proxy https://imagisphe.re permanent |  | ||||||
| 	redir /patch https://spaceint.fr permanent |  | ||||||
| 	redir /greep https://greep.fr permanent |  | ||||||
|  |  | ||||||
| 	# Youtube links |  | ||||||
| 	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 /lechanteur 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 |  | ||||||
| 	redir /train https://youtu.be/l8mScKWj3kQ?si=BV07uJ9eP3kzV9Kl permanent |  | ||||||
| 	redir /jdg https://www.youtube.com/@joueurdugrenier permanent |  | ||||||
| } |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| bensuperpc.ovh { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.ovh { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,42 +0,0 @@ | |||||||
| services: |  | ||||||
|   # Caddy |  | ||||||
|   caddy: |  | ||||||
|     image: caddy:latest |  | ||||||
|     container_name: caddy |  | ||||||
|     profiles: |  | ||||||
|       - caddy |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     ports: |  | ||||||
|       - 80:80 |  | ||||||
|       - 443:443 |  | ||||||
|     volumes: |  | ||||||
|       - wordpress:/var/www/html:rw |  | ||||||
|       - caddy_data:/data:rw |  | ||||||
|       - caddy_config:/config:rw |  | ||||||
|       - ./caddy/config:/etc/caddy:ro |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     env_file: |  | ||||||
|       - ./caddy/env/caddy.env |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|     #cap_drop: |  | ||||||
|     #  - ALL |  | ||||||
|     cap_add: |  | ||||||
|       - NET_ADMIN |  | ||||||
|     healthcheck: |  | ||||||
|       test: pidof caddy || exit 1 |  | ||||||
|       interval: 120s |  | ||||||
|       timeout: 10s |  | ||||||
|       retries: 3 |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   caddy_data: |  | ||||||
|     name: caddy_data |  | ||||||
|   caddy_config: |  | ||||||
|     name: caddy_config |  | ||||||
|  |  | ||||||
| networks: |  | ||||||
|   infra-network: |  | ||||||
|     driver: bridge |  | ||||||
|     name: infra-network |  | ||||||
							
								
								
									
										0
									
								
								infrastructure/caddy/env/caddy.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								infrastructure/caddy/env/caddy.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,45 +0,0 @@ | |||||||
| services: |  | ||||||
|   # ghost |  | ||||||
|   ghost: |  | ||||||
|     image: ghost:latest |  | ||||||
|     container_name: ghost |  | ||||||
|     profiles: |  | ||||||
|       - ghost |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - ghost_db |  | ||||||
|       - caddy |  | ||||||
|     env_file: |  | ||||||
|       - ./ghost/env/ghost.env |  | ||||||
|     volumes: |  | ||||||
|       - ghost_data:/var/lib/ghost/content:rw |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
|   # Database ghost |  | ||||||
|   ghost_db: |  | ||||||
|     image: mariadb:latest |  | ||||||
|     container_name: ghost_db |  | ||||||
|     profiles: |  | ||||||
|       - database |  | ||||||
|       - ghost |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     volumes: |  | ||||||
|       - ghost_db:/var/lib/mysql:rw |  | ||||||
|     env_file: |  | ||||||
|       - ./ghost/env/ghost_db.env |  | ||||||
|     command: '--default-authentication-plugin=mysql_native_password' |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   ghost_db: |  | ||||||
|     name: ghost_db |  | ||||||
|   ghost_data: |  | ||||||
|     name: ghost_data |  | ||||||
							
								
								
									
										6
									
								
								infrastructure/ghost/env/ghost.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								infrastructure/ghost/env/ghost.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +0,0 @@ | |||||||
| database__client=mysql |  | ||||||
| database__connection__host=ghost_db |  | ||||||
| database__connection__user=bensuperpc |  | ||||||
| database__connection__password=37hc06tWrS9DbFN2RZG8qdMD |  | ||||||
| database__connection__database=ghost |  | ||||||
| url=https://ghost.bensuperpc.org |  | ||||||
							
								
								
									
										4
									
								
								infrastructure/ghost/env/ghost_db.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								infrastructure/ghost/env/ghost_db.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| MARIADB_ROOT_PASSWORD=a03F1GYjpiHNAgAdB0ApYcb0Bp8ZAYh2 |  | ||||||
| MARIADB_USER=bensuperpc |  | ||||||
| MARIADB_PASSWORD=37hc06tWrS9DbFN2RZG8qdMD |  | ||||||
| MARIADB_DATABASE=ghost |  | ||||||
| @@ -1,98 +0,0 @@ | |||||||
| # Example configuration file, it's safe to copy this as the default config file without any modification. |  | ||||||
|  |  | ||||||
| # You don't have to copy this file to your instance, |  | ||||||
| # just run `./act_runner generate-config > config.yaml` to generate a config file. |  | ||||||
|  |  | ||||||
| log: |  | ||||||
|   # The level of logging, can be trace, debug, info, warn, error, fatal |  | ||||||
|   level: info |  | ||||||
|  |  | ||||||
| runner: |  | ||||||
|   # Where to store the registration result. |  | ||||||
|   file: .runner |  | ||||||
|   # Execute how many tasks concurrently at the same time. |  | ||||||
|   capacity: 1 |  | ||||||
|   # Extra environment variables to run jobs. |  | ||||||
|   envs: |  | ||||||
|     A_TEST_ENV_NAME_1: a_test_env_value_1 |  | ||||||
|     A_TEST_ENV_NAME_2: a_test_env_value_2 |  | ||||||
|   # Extra environment variables to run jobs from a file. |  | ||||||
|   # It will be ignored if it's empty or the file doesn't exist. |  | ||||||
|   env_file: .env |  | ||||||
|   # The timeout for a job to be finished. |  | ||||||
|   # Please note that the Gitea instance also has a timeout (3h by default) for the job. |  | ||||||
|   # So the job could be stopped by the Gitea instance if it's timeout is shorter than this. |  | ||||||
|   timeout: 3h |  | ||||||
|   # Whether skip verifying the TLS certificate of the Gitea instance. |  | ||||||
|   insecure: false |  | ||||||
|   # The timeout for fetching the job from the Gitea instance. |  | ||||||
|   fetch_timeout: 5s |  | ||||||
|   # The interval for fetching the job from the Gitea instance. |  | ||||||
|   fetch_interval: 2s |  | ||||||
|   # The labels of a runner are used to determine which jobs the runner can run, and how to run them. |  | ||||||
|   # Like: "macos-arm64:host" or "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest" |  | ||||||
|   # Find more images provided by Gitea at https://gitea.com/gitea/runner-images . |  | ||||||
|   # If it's empty when registering, it will ask for inputting labels. |  | ||||||
|   # If it's empty when execute `daemon`, will use labels in `.runner` file. |  | ||||||
|   labels: |  | ||||||
|     - "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest" |  | ||||||
|     - "ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04" |  | ||||||
|     - "ubuntu-20.04:docker://gitea/runner-images:ubuntu-20.04" |  | ||||||
|  |  | ||||||
| cache: |  | ||||||
|   # Enable cache server to use actions/cache. |  | ||||||
|   enabled: true |  | ||||||
|   # The directory to store the cache data. |  | ||||||
|   # If it's empty, the cache data will be stored in $HOME/.cache/actcache. |  | ||||||
|   dir: "" |  | ||||||
|   # The host of the cache server. |  | ||||||
|   # It's not for the address to listen, but the address to connect from job containers. |  | ||||||
|   # So 0.0.0.0 is a bad choice, leave it empty to detect automatically. |  | ||||||
|   host: "" |  | ||||||
|   # The port of the cache server. |  | ||||||
|   # 0 means to use a random available port. |  | ||||||
|   port: 0 |  | ||||||
|   # The external cache server URL. Valid only when enable is true. |  | ||||||
|   # If it's specified, act_runner will use this URL as the ACTIONS_CACHE_URL rather than start a server by itself. |  | ||||||
|   # The URL should generally end with "/". |  | ||||||
|   external_server: "" |  | ||||||
|  |  | ||||||
| container: |  | ||||||
|   # Specifies the network to which the container will connect. |  | ||||||
|   # Could be host, bridge or the name of a custom network. |  | ||||||
|   # If it's empty, act_runner will create a network automatically. |  | ||||||
|   network: "" |  | ||||||
|   # Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker). |  | ||||||
|   privileged: false |  | ||||||
|   # And other options to be used when the container is started (eg, --add-host=my.gitea.url:host-gateway). |  | ||||||
|   options: |  | ||||||
|   # The parent directory of a job's working directory. |  | ||||||
|   # NOTE: There is no need to add the first '/' of the path as act_runner will add it automatically.  |  | ||||||
|   # If the path starts with '/', the '/' will be trimmed. |  | ||||||
|   # For example, if the parent directory is /path/to/my/dir, workdir_parent should be path/to/my/dir |  | ||||||
|   # If it's empty, /workspace will be used. |  | ||||||
|   workdir_parent: |  | ||||||
|   # Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob |  | ||||||
|   # You can specify multiple volumes. If the sequence is empty, no volumes can be mounted. |  | ||||||
|   # For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to: |  | ||||||
|   # valid_volumes: |  | ||||||
|   #   - data |  | ||||||
|   #   - /src/*.json |  | ||||||
|   # If you want to allow any volume, please use the following configuration: |  | ||||||
|   # valid_volumes: |  | ||||||
|   #   - '**' |  | ||||||
|   valid_volumes: [] |  | ||||||
|   # overrides the docker client host with the specified one. |  | ||||||
|   # If it's empty, act_runner will find an available docker host automatically. |  | ||||||
|   # If it's "-", act_runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers. |  | ||||||
|   # If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work. |  | ||||||
|   docker_host: "" |  | ||||||
|   # Pull docker image(s) even if already present |  | ||||||
|   force_pull: true |  | ||||||
|   # Rebuild docker image(s) even if already present |  | ||||||
|   force_rebuild: false |  | ||||||
|  |  | ||||||
| host: |  | ||||||
|   # The parent directory of a job's working directory. |  | ||||||
|   # If it's empty, $HOME/.cache/act/ will be used. |  | ||||||
|   workdir_parent: |  | ||||||
| @@ -1,72 +0,0 @@ | |||||||
| services: |  | ||||||
|   # Gitea |  | ||||||
|   gitea: |  | ||||||
|     image: gitea/gitea:latest-rootless |  | ||||||
|     container_name: gitea |  | ||||||
|     profiles: |  | ||||||
|       - gitea |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - database_gitea |  | ||||||
|       - caddy |  | ||||||
|     ports: |  | ||||||
|       - "22:22" |  | ||||||
|     env_file: |  | ||||||
|       - ./gitea/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 |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     volumes: |  | ||||||
|       - gitea_db:/var/lib/mysql:rw |  | ||||||
|     env_file: |  | ||||||
|       - ./gitea/env/gitea_db.env |  | ||||||
|     command: '--default-authentication-plugin=mysql_native_password' |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
|   # Gitea-runner |  | ||||||
|   gitea-runner: |  | ||||||
|     image: gitea/act_runner:latest |  | ||||||
|     container_name: gitea-runner |  | ||||||
|     profiles: |  | ||||||
|       - gitea-runner |  | ||||||
|     depends_on: |  | ||||||
|       - gitea |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     env_file: |  | ||||||
|       - ./gitea/env/gitea-runner.env |  | ||||||
|     volumes: |  | ||||||
|       - /var/run/docker.sock:/var/run/docker.sock |  | ||||||
|       - gitea_runner:/data |  | ||||||
|       - ./gitea/config/gitea_runner/config.yaml:/config.yaml:ro |  | ||||||
|     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 |  | ||||||
|   gitea_runner: |  | ||||||
|     name: gitea_runner |  | ||||||
							
								
								
									
										5
									
								
								infrastructure/gitea/env/gitea-runner.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								infrastructure/gitea/env/gitea-runner.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +0,0 @@ | |||||||
| GITEA_INSTANCE_URL=https://git.bensuperpc.org |  | ||||||
| GITEA_RUNNER_REGISTRATION_TOKEN=TBGzS0m823Xk732zRqjrbcSWFTEPajj5V5OFzXWP |  | ||||||
| GITEA_RUNNER_NAME=runner-1 |  | ||||||
| #GITEA_RUNNER_LABELS= |  | ||||||
| CONFIG_FILE=/config.yaml |  | ||||||
							
								
								
									
										15
									
								
								infrastructure/gitea/env/gitea.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								infrastructure/gitea/env/gitea.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,15 +0,0 @@ | |||||||
| 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 |  | ||||||
| GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c |  | ||||||
| #GITEA__security__INTERNAL_TOKEN= |  | ||||||
| GITEA__server__DOMAIN=git.bensuperpc.org |  | ||||||
| GITEA__server__SSH_DOMAIN=git.bensuperpc.org |  | ||||||
| GITEA__server__HTTP_PORT=3000 |  | ||||||
| GITEA__server__SSH_LISTEN_PORT=22 |  | ||||||
| GITEA__server__SSH_PORT=22 |  | ||||||
| GITEA__server__ROOT_URL=https://git.bensuperpc.org |  | ||||||
							
								
								
									
										4
									
								
								infrastructure/gitea/env/gitea_db.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								infrastructure/gitea/env/gitea_db.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X |  | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j |  | ||||||
| MYSQL_DATABASE=gitea |  | ||||||
| @@ -1,18 +0,0 @@ | |||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/latest/configs/bookmarks |  | ||||||
|  |  | ||||||
| - Developer: |  | ||||||
|     - Github: |  | ||||||
|         - abbr: GH |  | ||||||
|           href: https://github.com/bensuperpc |  | ||||||
|  |  | ||||||
| - Social: |  | ||||||
|     - Reddit: |  | ||||||
|         - abbr: RE |  | ||||||
|           href: https://reddit.com/u/bensuperpc |  | ||||||
|  |  | ||||||
| - Entertainment: |  | ||||||
|     - YouTube: |  | ||||||
|         - abbr: YT |  | ||||||
|           href: https://youtube.com/c/bensuperpc |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/latest/configs/docker/ |  | ||||||
|  |  | ||||||
| # my-docker: |  | ||||||
| #   host: 127.0.0.1 |  | ||||||
| #   port: 2375 |  | ||||||
|  |  | ||||||
| #my-docker: |  | ||||||
| #   socket: /var/run/docker.sock |  | ||||||
| @@ -1,2 +0,0 @@ | |||||||
| --- |  | ||||||
| # sample kubernetes config |  | ||||||
| @@ -1,50 +0,0 @@ | |||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/latest/configs/services |  | ||||||
|  |  | ||||||
| - Personal: |  | ||||||
|     - wordpress: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/wordpress.png |  | ||||||
|         href: https://www.bensuperpc.org/ |  | ||||||
|         description: Wordpress |  | ||||||
|     - ghost: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/ghost.png |  | ||||||
|         href: https://ghost.bensuperpc.org/ |  | ||||||
|         description: Ghost |  | ||||||
|     - uptime-kuma: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/uptime-kuma.png |  | ||||||
|         href: https://uptimekuma.bensuperpc.org/ |  | ||||||
|         description: Uptime Kuma |  | ||||||
|  |  | ||||||
| - Sharing: |  | ||||||
|     - jellyfin: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyfin.png |  | ||||||
|         href: https://jellyfin.bensuperpc.org/ |  | ||||||
|         description: Jellyfin |  | ||||||
|     - psitransfer: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/psitransfer.png |  | ||||||
|         href: https://psitransfer.bensuperpc.org/ |  | ||||||
|         description: PsiTransfer |  | ||||||
|     - qbittorrent: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/qbittorrent.png |  | ||||||
|         href: https://qbittorrent.bensuperpc.org/ |  | ||||||
|         description: qBittorrent |  | ||||||
|     - syncthing: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/syncthing.png |  | ||||||
|         href: https://syncthing.bensuperpc.org/ |  | ||||||
|         description: Syncthing |  | ||||||
|     - transmission: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/transmission.png |  | ||||||
|         href: https://transmission.bensuperpc.org/ |  | ||||||
|         description: Transmission |  | ||||||
|  |  | ||||||
| - Utils: |  | ||||||
|     - it-tools: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/it-tools.png |  | ||||||
|         href: https://it-tools.bensuperpc.org/ |  | ||||||
|         description: IT Tools |  | ||||||
|     - gitea: |  | ||||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/gitea.png |  | ||||||
|         href: https://gitea.bensuperpc.org/ |  | ||||||
|         description: Gitea |  | ||||||
|      |  | ||||||
| @@ -1,52 +0,0 @@ | |||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/latest/configs/settings |  | ||||||
|  |  | ||||||
| title: Bensuperpc |  | ||||||
|  |  | ||||||
| base: https://homepage.bensuperpc.org |  | ||||||
|  |  | ||||||
| #favicon: /images/favicon.ico |  | ||||||
|  |  | ||||||
| logpath: /app/logs |  | ||||||
|  |  | ||||||
| background:  |  | ||||||
|   image: /images/deep.jpg |  | ||||||
|   blur: md |  | ||||||
|   opacity: 50 |  | ||||||
|   brightness: 50 |  | ||||||
|  |  | ||||||
| theme: dark |  | ||||||
| color: slate |  | ||||||
|  |  | ||||||
| language: fr |  | ||||||
|  |  | ||||||
| layout: |  | ||||||
|   Personal: |  | ||||||
|     style: row |  | ||||||
|     columns: 6 |  | ||||||
|   Media: |  | ||||||
|     style: row |  | ||||||
|     columns: 6 |  | ||||||
|   Sharing: |  | ||||||
|     style: row |  | ||||||
|     columns: 6 |  | ||||||
|   Utils: |  | ||||||
|     style: row |  | ||||||
|     columns: 6 |  | ||||||
|     initiallyCollapsed: false |  | ||||||
|  |  | ||||||
| quicklaunch: |  | ||||||
|   searchDescriptions: true |  | ||||||
|   hideInternetSearch: false |  | ||||||
|   hideVisitURL: false |  | ||||||
|  |  | ||||||
| hideVersion: true |  | ||||||
|  |  | ||||||
| headerStyle: boxed |  | ||||||
|  |  | ||||||
| useEqualHeights: true |  | ||||||
|  |  | ||||||
| #providers: |  | ||||||
| #  openweathermap: openweathermapapikey |  | ||||||
| #  weatherapi: weatherapiapikey |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| --- |  | ||||||
| # For configuration options and examples, please see: |  | ||||||
| # https://gethomepage.dev/latest/configs/service-widgets |  | ||||||
|  |  | ||||||
| - resources: |  | ||||||
|     cpu: true |  | ||||||
|     memory: true |  | ||||||
|     disk: / |  | ||||||
|  |  | ||||||
| - search: |  | ||||||
|     provider: duckduckgo |  | ||||||
|     target: _blank |  | ||||||
|  |  | ||||||
| - datetime: |  | ||||||
|     text_size: xl |  | ||||||
|     locale: fr |  | ||||||
|     format: |  | ||||||
|         timeStyle: long |  | ||||||
|         dateStyle: long |  | ||||||
| @@ -1,25 +0,0 @@ | |||||||
| services: |  | ||||||
|   # homepage |  | ||||||
|   homepage: |  | ||||||
|     image: ghcr.io/gethomepage/homepage:latest |  | ||||||
|     container_name: homepage |  | ||||||
|     profiles: |  | ||||||
|       - homepage |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     env_file: |  | ||||||
|       - ./homepage/env/homepage.env |  | ||||||
|     volumes: |  | ||||||
|       - homepage_log:/app/logs |  | ||||||
|       - ./homepage/config:/app/config:ro |  | ||||||
|       - ./homepage/image:/app/public/images:ro |  | ||||||
|       - /var/run/docker.sock:/var/run/docker.sock:ro |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   homepage_log: |  | ||||||
|     name: homepage_log |  | ||||||
							
								
								
									
										2
									
								
								infrastructure/homepage/env/homepage.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								infrastructure/homepage/env/homepage.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | |||||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn |  | ||||||
| #PSITRANSFER_PORT=3000 |  | ||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 248 KiB | 
| @@ -1,23 +0,0 @@ | |||||||
| services: |  | ||||||
|   # it-tools |  | ||||||
|   it-tools: |  | ||||||
|     image: corentinth/it-tools:latest |  | ||||||
|     container_name: it-tools |  | ||||||
|     profiles: |  | ||||||
|       - it-tools |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|     read_only: false |  | ||||||
|     deploy: |  | ||||||
|       resources: |  | ||||||
|         limits: |  | ||||||
|           cpus: '0.5' |  | ||||||
|           memory: 512M |  | ||||||
|         reservations: |  | ||||||
|           cpus: '0.001' |  | ||||||
|           memory: 20M |  | ||||||
| @@ -1,43 +0,0 @@ | |||||||
| services: |  | ||||||
|   # Jellyfin |  | ||||||
|   jellyfin: |  | ||||||
|     image: jellyfin/jellyfin:latest |  | ||||||
|     container_name: jellyfin |  | ||||||
|     profiles: |  | ||||||
|       - jellyfin |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     env_file: |  | ||||||
|       - ./jellyfin/env/jellyfin.env |  | ||||||
|     volumes: |  | ||||||
|       - jellyfin_config:/config |  | ||||||
|       - jellyfin_data_movies:/movies:rw |  | ||||||
|       - jellyfin_data_series:/series:rw |  | ||||||
|       - jellyfin_data_documentaries:/documentaries:rw |  | ||||||
|       - jellyfin_data_musics:/musics:rw |  | ||||||
|       - jellyfin_data_personal:/personal:rw |  | ||||||
|       - jellyfin_cache:/cache |  | ||||||
|     # Hardware acceleration (For Intel and AMD GPUs) |  | ||||||
|     devices: |  | ||||||
|       - /dev/dri:/dev/dri |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   jellyfin_config: |  | ||||||
|     name: jellyfin_config |  | ||||||
|   jellyfin_data_movies: |  | ||||||
|     name: jellyfin_data_movies |  | ||||||
|   jellyfin_data_series: |  | ||||||
|     name: jellyfin_data_series |  | ||||||
|   jellyfin_data_documentaries: |  | ||||||
|     name: jellyfin_data_documentaries |  | ||||||
|   jellyfin_data_musics: |  | ||||||
|     name: jellyfin_data_musics |  | ||||||
|   jellyfin_data_personal: |  | ||||||
|     name: jellyfin_data_personal |  | ||||||
|   jellyfin_cache: |  | ||||||
|     name: jellyfin_cache |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| services: |  | ||||||
|   # privatebin |  | ||||||
|   privatebin: |  | ||||||
|     image: privatebin/nginx-fpm-alpine:latest |  | ||||||
|     container_name: privatebin |  | ||||||
|     profiles: |  | ||||||
|       - privatebin |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     volumes: |  | ||||||
|       - privatebin_data:/srv/data |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|     read_only: true |  | ||||||
|     deploy: |  | ||||||
|       resources: |  | ||||||
|         limits: |  | ||||||
|           cpus: '0.5' |  | ||||||
|           memory: 512M |  | ||||||
|         reservations: |  | ||||||
|           cpus: '0.001' |  | ||||||
|           memory: 20M |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   privatebin_data: |  | ||||||
|     name: privatebin_data |  | ||||||
| @@ -1,31 +0,0 @@ | |||||||
| services: |  | ||||||
|   # psitransfer |  | ||||||
|   psitransfer: |  | ||||||
|     image: psitrax/psitransfer:latest |  | ||||||
|     container_name: psitransfer |  | ||||||
|     profiles: |  | ||||||
|       - psitransfer |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     env_file: |  | ||||||
|       - ./psitransfer/env/psitransfer.env |  | ||||||
|     volumes: |  | ||||||
|       - psitransfer_data:/data |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|     read_only: true |  | ||||||
|     deploy: |  | ||||||
|       resources: |  | ||||||
|         limits: |  | ||||||
|           cpus: '0.5' |  | ||||||
|           memory: 512M |  | ||||||
|         reservations: |  | ||||||
|           cpus: '0.001' |  | ||||||
|           memory: 20M |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   psitransfer_data: |  | ||||||
|     name: psitransfer_data |  | ||||||
| @@ -1,2 +0,0 @@ | |||||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn |  | ||||||
| #PSITRANSFER_PORT=3000 |  | ||||||
| @@ -1,25 +0,0 @@ | |||||||
| services: |  | ||||||
|   # qBittorrent |  | ||||||
|   qbittorrent: |  | ||||||
|     image: lscr.io/linuxserver/qbittorrent:latest |  | ||||||
|     container_name: qbittorrent |  | ||||||
|     profiles: |  | ||||||
|       - qbittorrent |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     env_file: |  | ||||||
|       - ./qbittorrent/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 |  | ||||||
| @@ -1,5 +0,0 @@ | |||||||
| PUID=1000 |  | ||||||
| PGID=1000 |  | ||||||
| TZ=Etc/UTC |  | ||||||
| WEBUI_PORT=8080 |  | ||||||
| TORRENTING_PORT=6881 |  | ||||||
| @@ -1,25 +0,0 @@ | |||||||
| services: |  | ||||||
|   # syncthing |  | ||||||
|   syncthing: |  | ||||||
|     image: linuxserver/syncthing:latest |  | ||||||
|     container_name: syncthing |  | ||||||
|     profiles: |  | ||||||
|       - syncthing |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     env_file: |  | ||||||
|       - ./syncthing/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 |  | ||||||
							
								
								
									
										2
									
								
								infrastructure/syncthing/env/syncthing.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								infrastructure/syncthing/env/syncthing.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | |||||||
| PUID=1000 |  | ||||||
| PGID=1000 |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| services: |  | ||||||
|   # transmission |  | ||||||
|   transmission: |  | ||||||
|     image: lscr.io/linuxserver/transmission:latest |  | ||||||
|     container_name: transmission |  | ||||||
|     profiles: |  | ||||||
|       - transmission |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     env_file: |  | ||||||
|       - ./transmission/env/transmission.env |  | ||||||
|     volumes: |  | ||||||
|       - transmission_config:/config |  | ||||||
|       - transmission_data:/downloads |  | ||||||
|       - transmission_watch:/watch |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   transmission_config: |  | ||||||
|     name: transmission_config |  | ||||||
|   transmission_data: |  | ||||||
|     name: transmission_data |  | ||||||
|   transmission_watch: |  | ||||||
|     name: transmission_watch |  | ||||||
| @@ -1,5 +0,0 @@ | |||||||
| PUID=1000 |  | ||||||
| PGID=1000 |  | ||||||
| TZ=Etc/UTC |  | ||||||
| USER=admin |  | ||||||
| PASS=4vqXCNGG09JUBe7rXkuQS8MG7ovE6Vxj |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| 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:5 |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   uptimekuma_data: |  | ||||||
|     name: uptimekuma_data |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| services: |  | ||||||
|   # Watchtower |  | ||||||
|   watchtower: |  | ||||||
|     image: containrrr/watchtower |  | ||||||
|     container_name: watchtower |  | ||||||
|     profiles: |  | ||||||
|       - watchtower |  | ||||||
|     depends_on: |  | ||||||
|       - caddy |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     volumes: |  | ||||||
|       - /var/run/docker.sock:/var/run/docker.sock:rw |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| memory_limit = 1024M |  | ||||||
| upload_max_filesize = 64M |  | ||||||
| post_max_size = 64M |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| services: |  | ||||||
|   # Adminer |  | ||||||
|   adminer: |  | ||||||
|     image: adminer:latest |  | ||||||
|     container_name: adminer |  | ||||||
|     profiles: |  | ||||||
|       - adminer |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     env_file:  |  | ||||||
|       - ./wordpress/env/adminer.env |  | ||||||
|     depends_on: |  | ||||||
|       - wordpress_db |  | ||||||
|       - caddy |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
| @@ -1,67 +0,0 @@ | |||||||
| services: |  | ||||||
|   # Wordpress |  | ||||||
|   wordpress: |  | ||||||
|     image: wordpress:fpm |  | ||||||
|     container_name: wordpress |  | ||||||
|     profiles: |  | ||||||
|       - wordpress |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     depends_on: |  | ||||||
|       - wordpress_db |  | ||||||
|       - caddy |  | ||||||
|     env_file: |  | ||||||
|       - ./wordpress/env/wordpress.env |  | ||||||
|     volumes: |  | ||||||
|       - ./wordpress/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:5 |  | ||||||
|     volumes: |  | ||||||
|       - wordpress_db:/var/lib/mysql:rw |  | ||||||
|     env_file: |  | ||||||
|       - ./wordpress/env/wordpress_db.env |  | ||||||
|     command: '--default-authentication-plugin=mysql_native_password' |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
|   wordpress_backup: |  | ||||||
|     image: mazzolino/restic:latest |  | ||||||
|     container_name: wordpress_backup |  | ||||||
|     profiles: |  | ||||||
|       - wordpress |  | ||||||
|     depends_on: |  | ||||||
|       - wordpress |  | ||||||
|     restart: on-failure:5 |  | ||||||
|     env_file: |  | ||||||
|       - ./wordpress/env/backup.env |  | ||||||
|     volumes: |  | ||||||
|       - wordpress_backup:/mnt/restic |  | ||||||
|       - wordpress_db:/data/wordpress_db:ro |  | ||||||
|       - wordpress:/data/wordpress:ro |  | ||||||
|     networks: |  | ||||||
|       - infra-network |  | ||||||
|     security_opt: |  | ||||||
|       - no-new-privileges:true |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   wordpress_db: |  | ||||||
|     name: wordpress_db |  | ||||||
|   wordpress: |  | ||||||
|     name: wordpress |  | ||||||
|   wordpress_backup: |  | ||||||
|     name: wordpress_backup |  | ||||||
							
								
								
									
										4
									
								
								infrastructure/wordpress/env/adminer.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								infrastructure/wordpress/env/adminer.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ |  | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| ADMINER_DEFAULT_SERVER=wordpress_db |  | ||||||
							
								
								
									
										9
									
								
								infrastructure/wordpress/env/backup.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								infrastructure/wordpress/env/backup.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | |||||||
| #RUN_ON_STARTUP=true |  | ||||||
| BACKUP_CRON=*/30 * * * * |  | ||||||
| RESTIC_REPOSITORY=/mnt/restic |  | ||||||
| RESTIC_BACKUP_SOURCES=/data |  | ||||||
| RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ |  | ||||||
| RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose |  | ||||||
| RESTIC_FORGET_ARGS=--prune --keep-last 8 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 4 |  | ||||||
| #RESTIC_PRUNE_ARGS= |  | ||||||
| RESTIC_CHECK_ARGS=--read-data-subset=20% |  | ||||||
							
								
								
									
										4
									
								
								infrastructure/wordpress/env/wordpress.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								infrastructure/wordpress/env/wordpress.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| WORDPRESS_DB_USER=bensuperpc |  | ||||||
| WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| WORDPRESS_DB_NAME=wordpress |  | ||||||
| WORDPRESS_DB_HOST=wordpress_db:3306 |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ |  | ||||||
| MARIADB_USER=bensuperpc |  | ||||||
| MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| MARIADB_DATABASE=wordpress |  | ||||||
							
								
								
									
										29
									
								
								nginx/conf.d-cert/jellyfin.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								nginx/conf.d-cert/jellyfin.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | 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; | ||||||
|  | } | ||||||
							
								
								
									
										50
									
								
								nginx/conf.d-cert/wordpress.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								nginx/conf.d-cert/wordpress.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | 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; | ||||||
|  | } | ||||||
							
								
								
									
										130
									
								
								nginx/conf.d/jellyfin.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								nginx/conf.d/jellyfin.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,130 @@ | |||||||
|  | proxy_cache_path /var/cache/nginx/jellyfin levels=1:2 keys_zone=jellyfin:100m max_size=2g inactive=30d use_temp_path=off; | ||||||
|  |  | ||||||
|  | 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; | ||||||
|  |  | ||||||
|  |         root /var/www/jellyfin; | ||||||
|  |  | ||||||
|  |         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; | ||||||
|  |  | ||||||
|  |         ## The default `client_max_body_size` is 1M, this might not be enough for some posters, etc. | ||||||
|  |         client_max_body_size 20M; | ||||||
|  |  | ||||||
|  |         # 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; | ||||||
|  |  | ||||||
|  |         # Security | ||||||
|  |         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; | ||||||
|  |  | ||||||
|  |         # 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"; | ||||||
|  |  | ||||||
|  |         # Content Security Policy | ||||||
|  |         # See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | ||||||
|  |         # Enforces https content and restricts JS/CSS to origin | ||||||
|  |         # External Javascript (such as cast_sender.js for Chromecast) must be whitelisted. | ||||||
|  |         # NOTE: The default CSP headers may cause issues with the webOS app | ||||||
|  |         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 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 block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/ | ||||||
|  |         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 (inside server block) | ||||||
|  |         location ~ /Items/(.*)/Images { | ||||||
|  |                 proxy_pass http://127.0.0.1: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; | ||||||
|  |  | ||||||
|  |                 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 | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         resolver 8.8.8.8; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # All configuration options are documented at https://jellyfin.org/docs/general/networking/nginx/ | ||||||
							
								
								
									
										24
									
								
								nginx/conf.d/phpmyadmin.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								nginx/conf.d/phpmyadmin.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | 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; | ||||||
|  |  | ||||||
|  |         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; | ||||||
|  | } | ||||||
							
								
								
									
										24
									
								
								nginx/conf.d/qbittorrent.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								nginx/conf.d/qbittorrent.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | 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; | ||||||
|  |  | ||||||
|  |         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; | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								nginx/conf.d/stream/minecraft.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								nginx/conf.d/stream/minecraft.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | #server { | ||||||
|  |     # Port number the reverse proxy is listening on | ||||||
|  | #    listen  25565; | ||||||
|  |     # The original Minecraft server address | ||||||
|  | #    proxy_pass  server.example.com:25565; | ||||||
|  | #} | ||||||
							
								
								
									
										28
									
								
								nginx/conf.d/sub/cache-fastcgi.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								nginx/conf.d/sub/cache-fastcgi.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | # 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; | ||||||
|  |  | ||||||
|  | fastcgi_buffer_size 128k; | ||||||
|  | fastcgi_buffers 256 16k; | ||||||
|  | fastcgi_busy_buffers_size 256k; | ||||||
|  | fastcgi_temp_file_write_size 256k; | ||||||
|  |  | ||||||
|  | # Some parts of this file are from | ||||||
|  | # https://gist.github.com/TrafeX/6d582b6d040702088722 | ||||||
							
								
								
									
										25
									
								
								nginx/conf.d/sub/cache-proxy.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								nginx/conf.d/sub/cache-proxy.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | # 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; | ||||||
|  |  | ||||||
|  | # Increase proxy buffers for large requests | ||||||
|  | proxy_buffer_size 128k; | ||||||
|  | proxy_buffers 4 256k; | ||||||
|  | proxy_busy_buffers_size 256k; | ||||||
							
								
								
									
										20
									
								
								nginx/conf.d/sub/cache-uwsgi.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								nginx/conf.d/sub/cache-uwsgi.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | # 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; | ||||||
							
								
								
									
										13
									
								
								nginx/conf.d/sub/gzip.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								nginx/conf.d/sub/gzip.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | # 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)"; | ||||||
							
								
								
									
										15
									
								
								nginx/conf.d/sub/options-ssl-nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								nginx/conf.d/sub/options-ssl-nginx.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | # 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; | ||||||
|  |  | ||||||
|  | add_header Strict-Transport-Security "max-age=63072000" always; | ||||||
|  |  | ||||||
|  | # OCSP stapling | ||||||
|  | ssl_stapling on; | ||||||
|  | ssl_stapling_verify on; | ||||||
							
								
								
									
										243
									
								
								nginx/conf.d/wordpress.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										243
									
								
								nginx/conf.d/wordpress.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,243 @@ | |||||||
|  | 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; | ||||||
|  |  | ||||||
|  |         root /var/www/wordpress; | ||||||
|  |         index index.php index.html index.htm; | ||||||
|  |  | ||||||
|  |         reset_timedout_connection on; | ||||||
|  |  | ||||||
|  |         # 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; | ||||||
|  |  | ||||||
|  |         location ~ /.well-knownwell-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_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; | ||||||
|  |  | ||||||
|  |                 fastcgi_connect_timeout 600; | ||||||
|  |                 fastcgi_send_timeout 600; | ||||||
|  |                 fastcgi_read_timeout 600; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         # 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 | ||||||
|  |  | ||||||
|  |         #location / { | ||||||
|  |         #        return 301 https://$host$request_uri; | ||||||
|  |         #} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Main server wordpress_server | ||||||
|  | server { | ||||||
|  |         listen 443 ssl http2; | ||||||
|  |         #listen 443 http3 reuseport; | ||||||
|  |  | ||||||
|  |         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; | ||||||
|  |  | ||||||
|  |         reset_timedout_connection on; | ||||||
|  |  | ||||||
|  |         # 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; | ||||||
|  |          | ||||||
|  |         # 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; | ||||||
|  |  | ||||||
|  |         # Security | ||||||
|  |         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; | ||||||
|  |  | ||||||
|  |         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 | ||||||
|  | } | ||||||
							
								
								
									
										40
									
								
								nginx/nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								nginx/nginx.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  |  | ||||||
|  | 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 for 70 seconds | ||||||
|  |     keepalive_timeout 70; | ||||||
|  |  | ||||||
|  |     # Number of requests per connection | ||||||
|  |     keepalive_requests 100; | ||||||
|  |  | ||||||
|  |     include /etc/nginx/conf.d/sub/gzip.conf; | ||||||
|  |  | ||||||
|  |     include /etc/nginx/conf.d/*.conf; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | stream { | ||||||
|  |     include /etc/nginx/conf.d/stream/*.conf; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user