mirror of
				https://github.com/bensuperpc/infrastructure.git
				synced 2025-10-25 23:36:20 +02:00 
			
		
		
		
	Compare commits
	
		
			109 Commits
		
	
	
		
			mainold
			...
			55bf1ddf70
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 55bf1ddf70 | |||
| b6d1b9f5a7 | |||
| 54e24022ce | |||
| a65975e840 | |||
| 62e7ec4650 | |||
| 41fe67ba58 | |||
| 0745869554 | |||
| 4dc0d9f56a | |||
| 96d4284d64 | |||
| 1b34b7f9f2 | |||
| b2a3b2623e | |||
| 162250b0d9 | |||
| b819c4398d | |||
| 5b48945835 | |||
| d7a36310ec | |||
| c0aa45026b | |||
| 71ab3026c6 | |||
| 2aaccc2458 | |||
| a15380b95c | |||
| 84986db7b1 | |||
| 3573286659 | |||
| 0c75405cec | |||
| b8259bf676 | |||
| fe327d654a | |||
| c33e11e455 | |||
| 1f96c00bfc | |||
| 247e344a52 | |||
| bd67d7d944 | |||
| 47ea7b6ea5 | |||
| 059289d7c3 | |||
| 5eef332e34 | |||
| 51a014e14c | |||
| edc107feaf | |||
| 68b917a720 | |||
| eab7e99486 | |||
| 3d88e6ca37 | |||
| 927522a5a8 | |||
| bcec823b46 | |||
| 572c9bc4bb | |||
| 7989688e8f | |||
| 4ba26dd3b7 | |||
| ec51802360 | |||
| 6a91e090df | |||
| 8ac352e542 | |||
|   | 6e57893aec | ||
| 2a997e0f4c | |||
| 8b479921c7 | |||
| f22ca7a7f0 | |||
| 0e523a9edc | |||
| ced832d359 | |||
| 0f7df1997f | |||
| a141daff08 | |||
| 29e3988bca | |||
| 72973384fb | |||
| 2da0baa838 | |||
| 0c27a361d3 | |||
| 6b5f489252 | |||
| 39ba3a47a2 | |||
| 112df38652 | |||
| b9296c280d | |||
| 2df1d52ffb | |||
| b101480a01 | |||
| f11ca40a94 | |||
| 340c1a1438 | |||
| 33b68a1811 | |||
| 805584b2e1 | |||
| 60837143f6 | |||
| 4527aed52b | |||
| 9110cfec89 | |||
| 817d09683b | |||
| aee30a0aaf | |||
| 7231d29b91 | |||
| 2eaaf1f936 | |||
| 5e3b93ac20 | |||
| fe7cac2fb5 | |||
| 4add489e77 | |||
| 8dc8a2bea4 | |||
| b099097526 | |||
| 077aaf806c | |||
| 9835f44382 | |||
| 3bd36ddf87 | |||
| f4b6c9e886 | |||
| 6fc996fdec | |||
| 6fd0a9563e | |||
| 870649e860 | |||
| 01cd09f1e5 | |||
| 6915ecb88d | |||
| 92722a9f59 | |||
| 88499758d6 | |||
| 8730a32195 | |||
| 8f8b37edf8 | |||
| 134060c73d | |||
| 1771a8e3ad | |||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9ef3b36aa6 | ||
| e8f1a9fd35 | |||
| 8b7c2d9f89 | |||
| 32c44523b4 | |||
| 3716b0a4ce | |||
| 7ae9bf54a3 | |||
| 93d6a913ed | |||
| 851c67cf90 | |||
| 0c8bd4664c | |||
| fe8d7c0882 | |||
| 7efd27e4d9 | |||
| 834b50a6ba | |||
| ae6eff1f7c | |||
| b35ebcf7be | |||
| 418724258e | |||
| 1babc4f57b | 
							
								
								
									
										15
									
								
								.gitea/workflows/gitea-ci.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.gitea/workflows/gitea-ci.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| 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
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| github: bensuperpc  | ||||
							
								
								
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| --- | ||||
| name: Bug report | ||||
| about: Create a report to help us improve | ||||
| title: '' | ||||
| labels: '' | ||||
| assignees: '' | ||||
|  | ||||
| --- | ||||
|  | ||||
| **Describe the bug** | ||||
| A clear and concise description of what the bug is. | ||||
|  | ||||
| **To Reproduce** | ||||
| Steps to reproduce the behavior: | ||||
| 1. Go to '...' | ||||
| 2. Click on '....' | ||||
| 3. Scroll down to '....' | ||||
| 4. See error | ||||
|  | ||||
| **Expected behavior** | ||||
| A clear and concise description of what you expected to happen. | ||||
|  | ||||
| **Screenshots** | ||||
| If applicable, add screenshots to help explain your problem. | ||||
|  | ||||
| **Desktop (please complete the following information):** | ||||
|  - OS: [e.g. iOS] | ||||
|  - Browser [e.g. chrome, safari] | ||||
|  - Version [e.g. 22] | ||||
|  | ||||
| **Smartphone (please complete the following information):** | ||||
|  - Device: [e.g. iPhone6] | ||||
|  - OS: [e.g. iOS8.1] | ||||
|  - Browser [e.g. stock browser, safari] | ||||
|  - Version [e.g. 22] | ||||
|  | ||||
| **Additional context** | ||||
| Add any other context about the problem here. | ||||
							
								
								
									
										10
									
								
								.github/ISSUE_TEMPLATE/custom.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.github/ISSUE_TEMPLATE/custom.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| --- | ||||
| name: Custom issue template | ||||
| about: Describe this issue template's purpose here. | ||||
| title: '' | ||||
| labels: '' | ||||
| assignees: '' | ||||
|  | ||||
| --- | ||||
|  | ||||
|  | ||||
							
								
								
									
										20
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| --- | ||||
| name: Feature request | ||||
| about: Suggest an idea for this project | ||||
| title: '' | ||||
| labels: '' | ||||
| assignees: '' | ||||
|  | ||||
| --- | ||||
|  | ||||
| **Is your feature request related to a problem? Please describe.** | ||||
| A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] | ||||
|  | ||||
| **Describe the solution you'd like** | ||||
| A clear and concise description of what you want to happen. | ||||
|  | ||||
| **Describe alternatives you've considered** | ||||
| A clear and concise description of any alternative solutions or features you've considered. | ||||
|  | ||||
| **Additional context** | ||||
| Add any other context or screenshots about the feature request here. | ||||
							
								
								
									
										6
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| version: 2 | ||||
| updates: | ||||
|   - package-ecosystem: "github-actions" | ||||
|     directory: "/" | ||||
|     schedule: | ||||
|       interval: "daily"  | ||||
							
								
								
									
										46
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| 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
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.github/workflows/submodule-update.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| name: submodule-update | ||||
|  | ||||
| on: | ||||
|   schedule: | ||||
|     - cron: '0 */8 * * *' | ||||
|   workflow_dispatch: | ||||
|  | ||||
| jobs: | ||||
|   image: | ||||
|     name: submodule-update | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: "Checkout Code" | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           token: ${{ secrets.CI_TOKEN }} | ||||
|           repository: ${{ github.repository }} | ||||
|           submodules: 'recursive' | ||||
|           fetch-depth: 1 | ||||
|       # Update references | ||||
|       - name: Git Sumbodule Update | ||||
|         run: | | ||||
|           git pull --recurse-submodules | ||||
|           git submodule update --remote --recursive | ||||
|       # Commit and push | ||||
|       - name: Commit update | ||||
|         run: | | ||||
|           git config --global user.name 'Bensuperpc' | ||||
|           git config --global user.email 'bensuperpc@gmail.com' | ||||
|           git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} | ||||
|           git commit -am "Auto updated submodule references" && git push || echo "No changes to commit" | ||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +1 @@ | ||||
| *.env | ||||
| **/*.env | ||||
|  | ||||
|   | ||||
							
								
								
									
										51
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,15 +1,8 @@ | ||||
| #////////////////////////////////////////////////////////////// | ||||
| #//   ____                                                   // | ||||
| #//  | __ )  ___ _ __  ___ _   _ _ __   ___ _ __ _ __   ___  // | ||||
| #//  |  _ \ / _ \ '_ \/ __| | | | '_ \ / _ \ '__| '_ \ / __| // | ||||
| #//  | |_) |  __/ | | \__ \ |_| | |_) |  __/ |  | |_) | (__  // | ||||
| #//  |____/ \___|_| |_|___/\__,_| .__/ \___|_|  | .__/ \___| // | ||||
| #//                             |_|             |_|          // | ||||
| #////////////////////////////////////////////////////////////// | ||||
| #//                                                          // | ||||
| #//  Script, 2022                                            // | ||||
| #//  Infrastructure, 2024                                    // | ||||
| #//  Created: 14, April, 2022                                // | ||||
| #//  Modified: 17, March, 2023                               // | ||||
| #//  Modified: 05, May, 2024                                 // | ||||
| #//  file: -                                                 // | ||||
| #//  -                                                       // | ||||
| #//  Source:                                                 // | ||||
| @@ -20,56 +13,68 @@ | ||||
|  | ||||
| DOCKER := docker | ||||
|  | ||||
| PROFILES := wp_db wordpress webserver certbot phpmyadmin qbittorrent jellyfin | ||||
| TORRENTS_SERVICES := qbittorrent transmission | ||||
| SHARING_SERVICES := psitransfer picoshare privatebin projectsend jellyfin dufs | ||||
| ADMIN_SERVICES := yacht uptime-kuma adminer | ||||
| UTILS_SERVICES := it-tools | ||||
|  | ||||
| # stirlingpdf | ||||
|  | ||||
| PROFILES := caddy wordpress syncthing gitea homepage $(SHARING_SERVICES) $(TORRENTS_SERVICES) $(ADMIN_SERVICES) $(UTILS_SERVICES) | ||||
| PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) | ||||
|  | ||||
| # gitea-runner dozzle watchtower | ||||
|  | ||||
| COMPOSE_FILES :=  $(shell find docker-compose* | sed -e 's/^/--file /') | ||||
| COMPOSE_FILES :=  $(shell find . -name 'docker-compose*.yml' -type f | sed -e 's/^/--file /') | ||||
|  | ||||
| AUTHOR := bensuperpc | ||||
| COMPOSE_DIR := --project-directory ./infrastructure | ||||
|  | ||||
| .PHONY: build all | ||||
| all: start | ||||
|  | ||||
| .PHONY: build | ||||
| build: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) build | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) build | ||||
|  | ||||
| .PHONY: start | ||||
| start: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) up -d | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) up -d | ||||
|  | ||||
| .PHONY: start-at | ||||
| start-at: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) up | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) up | ||||
|  | ||||
| .PHONY: docker-check | ||||
| docker-check: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILES_CMD) config | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) config | ||||
|  | ||||
| .PHONY: stop | ||||
| stop: down | ||||
|  | ||||
| .PHONY: down | ||||
| down: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) down | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) down | ||||
|  | ||||
| .PHONY: restart | ||||
| restart: stop start | ||||
|  | ||||
| .PHONY: logs | ||||
| logs: | ||||
| 	docker compose $(COMPOSE_FILES) logs | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) logs | ||||
|  | ||||
| .PHONY: state | ||||
| state: | ||||
| 	docker compose $(COMPOSE_FILES) ps | ||||
| 	docker compose $(COMPOSE_FILES) top | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) ps | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) top | ||||
|  | ||||
| .PHONY: update-docker | ||||
| update-docker: | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) pull | ||||
|  | ||||
| .PHONY: update | ||||
| update: | ||||
| update: update-docker | ||||
| 	git submodule update --init --recursive --remote | ||||
| 	git pull --recurse-submodules --all --progress | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILES_CMD) pull | ||||
|  | ||||
| .PHONY: clean | ||||
| clean: | ||||
| @@ -77,4 +82,4 @@ clean: | ||||
|  | ||||
| .PHONY: purge | ||||
| purge: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) down -v --rmi all | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) down -v --rmi all | ||||
							
								
								
									
										236
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										236
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,28 +1,29 @@ | ||||
| # Infrastructure | ||||
|  | ||||
| _My personal infrastructure for my servers and services._ | ||||
| _Open source, decentralized and self-hosted infrastructure for many services._ | ||||
|  | ||||
| ## About | ||||
|  | ||||
| This is my infrastructure. It's a collection of scripts and configuration files that I use to manage my servers and services. | ||||
| It uses Nginx and docker-compose to run my services (And many other things). | ||||
| It uses caddy and docker-compose to run my services (And many other things). | ||||
| It's a **work in progress**, and I'm still learning a lot about it. | ||||
| If you have any **questions** or **suggestions**, feel free to open an issue or a pull request. | ||||
|  | ||||
| ## Features | ||||
|  | ||||
| - [x] Nginx reverse proxy | ||||
| - [x] caddy 2 reverse proxy | ||||
| - [x] Docker / docker-compose | ||||
| - [x] Letsencrypt / Certbot | ||||
| - [x] Wordpress (Via FASTCGI/NGINX) | ||||
| - [x] PHPMyAdmin (MariaDB) | ||||
| - [x] PGAdmin (PostgreSQL) | ||||
| - [x] Qbittorrent | ||||
| - [x] Jellyfin | ||||
| - [ ] Gitea | ||||
| - [ ] Mastodon | ||||
| - [ ] Minecraft server (Hyperworld v2) | ||||
| - [ ] SSL for all subdomains / Services (Not just the main domain) | ||||
| - [x] Caddy | ||||
| - [x] Wordpress (Via FASTCGI/caddy) | ||||
| - [x] Adminer (MariaDB) | ||||
| - [x] Jellyfin (Media server) | ||||
| - [x] Gitea (Git server) | ||||
| - [x] Uptime Kuma (Monitoring) | ||||
| - [x] qbittorrent and transmission (Torrent client/server) | ||||
| - [x] SyncThing (File synchronization) | ||||
| - [x] PsiTransfer (File sharing) | ||||
| - [x] it-tools (Tools for IT) | ||||
| - [x] Privatebin (Pastebin) | ||||
| - [x] Yacht (Web interface for managing docker containers) | ||||
|  | ||||
| ## Screenshots | ||||
|  | ||||
| @@ -34,7 +35,9 @@ If you have any **questions** or **suggestions**, feel free to open an issue or | ||||
| - [Docker Compose](https://docs.docker.com/compose/install/) | ||||
| - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | ||||
| - [Web domain](https://www.ovh.com/world/domains/) (I use OVH) | ||||
| - [Open port 80 and 443 on your router](http://192.168.0.1/) (I use a Orange box with default IP) | ||||
| - [Open port 80, 443, 22 on your router](http://192.168.1.1/) | ||||
|  | ||||
| ***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 | ||||
|  | ||||
| @@ -50,105 +53,136 @@ Go to the folder | ||||
| cd infrastructure | ||||
| ``` | ||||
|  | ||||
| ### Get the SSL certificate | ||||
| ### Configure the domain | ||||
|  | ||||
| For all **bensuperpc.org**, you need to replace it with your domain, example: **bensuperpc.com** | ||||
| For all **bensuperpc.org**, you need to replace it with your domain, example: **mydomain.com**, so the same for **bensuperpc.com** ect... | ||||
|  | ||||
| ```sh | ||||
| find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/bensuperpc.com/g' | ||||
| find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/mydomain.com/g' | ||||
| ``` | ||||
|  | ||||
| Keep original config file | ||||
| Check if all bensuperpc.* are replaced by your domain in [Caddyfile](caddy/wordpress/Caddyfile) | ||||
|  | ||||
| And then, caddy will generate the certificate for you and renew it automatically :D | ||||
|  | ||||
| | Domain name | Type | Description | | ||||
| | --- | --- | --- | | ||||
| | [www.bensuperpc.org](https://www.bensuperpc.org) | Main | Homepage | | ||||
| | [wordpress.bensuperpc.org](https://wordpress.bensuperpc.org) | Sub | Wordpress website | | ||||
| | [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 | | ||||
| | [yacht.bensuperpc.org](https://yacht.bensuperpc.org) | Sub | Web interface for managing docker containers | | ||||
| | [projectsend.bensuperpc.org](https://projectsend.bensuperpc.org) | Sub | ProjectSend for file sharing | | ||||
| | [picoshare.bensuperpc.org](https://picoshare.bensuperpc.org) | Sub | Picoshare for file sharing | | ||||
| | [dufs.bensuperpc.org](https://dufs.bensuperpc.org) | Sub | Dufs for file sharing | | ||||
| | 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 | ||||
| cp -r nginx/conf.d nginx/conf.d-original | ||||
| openssl rand -base64 32 | ||||
| ``` | ||||
|  | ||||
| Remove the old config file | ||||
| For the [wordpress.env](infrastructure/wordpress/env/wordpress.env) file, you need to change the password and user for the database. | ||||
|  | ||||
| ```sh | ||||
| rm -fr nginx/nginx-conf | ||||
| WORDPRESS_DB_USER=bensuperpc | ||||
| WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| WORDPRESS_DB_NAME=wordpress | ||||
| WORDPRESS_DB_HOST=wordpress_db:3306 | ||||
| ``` | ||||
|  | ||||
| Copy _nginx-conf-cert_ to _nginx-conf_, for temporary use to get the SSL certificate | ||||
| For [wordpress_db.env](infrastructure/wordpress/env/wordpress_db.env) file, you need to change the password(s) and user for the database. | ||||
|      | ||||
| ```sh | ||||
| cp -r nginx/conf.d-cert nginx/conf.d | ||||
| MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| MARIADB_DATABASE=wordpress | ||||
| ``` | ||||
|  | ||||
| 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 | ||||
| For [wordpress_backup.env](infrastructure/wordpress/env/wordpress_backup.env) file, you need to change the password(s) for the restic backup. | ||||
| ```sh | ||||
| RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| ``` | ||||
|  | ||||
| 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 | ||||
| For [adminer.env](infrastructure/wordpress/env/adminer.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| make start-at | ||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| ADMINER_DEFAULT_SERVER=wordpress_db | ||||
| ``` | ||||
|  | ||||
| Replace certbot commands in _docker-compose.yml_ to update and renew the SSL certificate | ||||
| For [gitea.env](infrastructure/gitea/env/gitea.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
|     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  | ||||
| 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 | ||||
| ``` | ||||
|  | ||||
| Run the docker-compose to update and renew the SSL certificate and exit with CTRL+C when you have the SSL certificate | ||||
| For [gitea_db.env](infrastructure/gitea/env/gitea_db.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| make start-at | ||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| MYSQL_DATABASE=gitea | ||||
| ``` | ||||
|  | ||||
| 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 | ||||
| For [psitransfer.env](infrastructure/psitransfer/env/psitransfer.env) file, you need to change the secret key. | ||||
|  | ||||
| ```sh | ||||
| rm -fr nginx/conf.d | ||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | ||||
| ``` | ||||
|  | ||||
| Copy _nginx-conf-original_ to _nginx-conf_, for definitive use | ||||
| For [yacht.env](infrastructure/yacht/env/yacht.env) file, you need to change the secret key. | ||||
|  | ||||
| ```sh | ||||
| cp -r nginx/conf.d-original nginx/conf.d | ||||
| SECRET_KEY=UZvg9nbcGIJlPEB3uI39TAEWyFOz9nm8 | ||||
| ``` | ||||
|  | ||||
| Now you start services | ||||
| For [projectsend_db.env](infrastructure/projectsend/env/projectsend_db.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| make start-at | ||||
| MARIADB_ROOT_PASSWORD=8O34297GrBfT3Ld34Lfg9mpotmZwbJtt | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=wdSUa1JEZhXie5AJ5NcX1w73xmpO12EY | ||||
| MARIADB_DATABASE=projectsend | ||||
| ``` | ||||
|  | ||||
| ### Flask website | ||||
| For [picoshare.env](infrastructure/picoshare/env/picoshare.env) file, you need to change the secret key. | ||||
|  | ||||
| You can follow the [README.md](bensuperpc_website/README.md) to install the Flask website. | ||||
| ```sh | ||||
| PS_SHARED_SECRET=CBuS4DJLqIe93xF1KGYRrnhxUFBqLD2n | ||||
| ``` | ||||
|  | ||||
| ### Wordpress website | ||||
| For [dufs.env](infrastructure/dufs/env/dufs.env) file, you need to change the secret key and if you want the user name. | ||||
|  | ||||
| For the Wordpress website, you can configure in GUI when you go to the website. | ||||
| ```sh | ||||
| DUFS_AUTH="admin:heqihlOfBmJDESGFlpbPi7P7Mi6F7RkV@/:rw|@/" | ||||
| ``` | ||||
|  | ||||
| ### Start the infrastructure | ||||
|  | ||||
| @@ -164,16 +198,40 @@ Stop the website with (or CTRL+C with the previous command): | ||||
| make stop | ||||
| ``` | ||||
|  | ||||
| ## URL | ||||
| Remove countainers with: | ||||
|  | ||||
| You can access to the website with: | ||||
| ```sh | ||||
| make down | ||||
| ``` | ||||
|  | ||||
| - [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) | ||||
| ### All services | ||||
|  | ||||
| ## Build with | ||||
| You can find all service on this table: | ||||
|  | ||||
| | Service | Description | URL | | ||||
| | --- | --- | --- | | ||||
| | Homepage | Homepage | [www.bensuperpc.org](https://www.bensuperpc.org) | | ||||
| | Wordpress | Wordpress website | [wordpress.bensuperpc.org](https://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) | | ||||
| | Yacht | Web interface for managing docker containers | [yacht.bensuperpc.org](https://yacht.bensuperpc.org) | | ||||
| | ProjectSend | ProjectSend for file sharing | [projectsend.bensuperpc.org](https://projectsend.bensuperpc.org) | | ||||
| | Picoshare | Picoshare for file sharing | [picoshare.bensuperpc.org](https://picoshare.bensuperpc.org) | | ||||
| | Dufs | Dufs for file sharing | [dufs.bensuperpc.org](https://dufs.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/) | ||||
| - [Gnu Make](https://www.gnu.org/software/make/) | ||||
| @@ -182,15 +240,27 @@ You can access to the website with: | ||||
| - [Docker](https://www.docker.com/) | ||||
| - [Docker Compose](https://docs.docker.com/compose/) | ||||
| - [Docker Hub](https://hub.docker.com/) | ||||
| - [Digital Ocean](https://www.digitalocean.com/) | ||||
| - [Digital Ocean - How To Install WordPress with Docker Compose](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose) | ||||
| - [PGAmin](https://www.pgadmin.org/) | ||||
| - [Qbittorrent](https://www.qbittorrent.org/) | ||||
| - [Jellyfin](https://jellyfin.org/) | ||||
| - [How To Start WordPress with Caddy using Docker Compose](https://minhcung.me/how-to-start-wordpress-with-caddy-using-docker-compose-3d31bb9ef88b) | ||||
| - [Digital Ocean - How To Install WordPress with Docker Compose (nginx)](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose) | ||||
| - [Imagisphe](https://imagisphe.re/) | ||||
| - [Letsencrypt](https://letsencrypt.org/) | ||||
| - [Certbot](https://certbot.eff.org/) | ||||
| - [Nginx](https://www.nginx.com/) | ||||
| - [UWSGI](https://uwsgi-docs.readthedocs.io/en/latest/) | ||||
| - [Caddy](https://caddyserver.com/) | ||||
| - [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/) | ||||
| - [SyncThing](https://syncthing.net/) | ||||
| - [PsiTransfer](https://psitransfer.com/) | ||||
| - [It-tools](https://github.com/CorentinTh/it-tools) | ||||
| - [Privatebin](https://github.com/PrivateBin/PrivateBin) | ||||
| - [ghost](https://ghost.org) | ||||
| - [Homepage Tuto](https://belginux.com/installer-homepage-avec-docker/) | ||||
| - [Yacht](https://yacht.sh/) | ||||
| - [ProjectSend](https://www.projectsend.org/) | ||||
| - [Picoshare](https://github.com/mtlynch/picoshare) | ||||
| - [Dufs](https://github.com/sigoden/dufs) | ||||
|  | ||||
| ## License | ||||
|  | ||||
|   | ||||
| @@ -1,32 +0,0 @@ | ||||
| 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 | ||||
| @@ -1,48 +0,0 @@ | ||||
| version: "3.9" | ||||
|  | ||||
| services: | ||||
|   qbittorrent: | ||||
|     image: lscr.io/linuxserver/qbittorrent:latest | ||||
|     container_name: qbittorrent | ||||
|     profiles: | ||||
|       - qbittorrent | ||||
|     environment: | ||||
|       - PUID=1000 | ||||
|       - PGID=1000 | ||||
|       - TZ=Europe/London | ||||
|       - WEBUI_PORT=8080 | ||||
|     volumes: | ||||
|       - qbittorrent-conf:/config | ||||
|       - qbittorrent-downloads:/downloads | ||||
|     #ports: | ||||
|     #  - 8080:8080 | ||||
|     #  - 6881:6881 | ||||
|     #  - 6881:6881/udp | ||||
|     restart: unless-stopped | ||||
|     networks: | ||||
|       - app-network | ||||
|   jellyfin: | ||||
|     image: lscr.io/linuxserver/jellyfin:latest | ||||
|     container_name: jellyfin | ||||
|     profiles: | ||||
|       - jellyfin | ||||
|     environment: | ||||
|       - PUID=1000 | ||||
|       - PGID=1000 | ||||
|       - TZ=Europe/London | ||||
|       - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional | ||||
|     volumes: | ||||
|       - jellyfin-config:/config | ||||
|       - jellyfin-tvseries:/data/tvshows | ||||
|       - jellyfin-movies:/data/movies | ||||
|       - jellyfin:/var/www/html | ||||
|     #ports: | ||||
|     #  - 8096:8096 | ||||
|     #  - 8920:8920 #optional | ||||
|     #  - 7359:7359/udp #optional | ||||
|     #  - 1900:1900/udp #optional | ||||
|     restart: unless-stopped | ||||
|     networks: | ||||
|       - app-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| @@ -1,6 +0,0 @@ | ||||
| version: "3.9" | ||||
|  | ||||
| networks: | ||||
|   app-network: | ||||
|     driver: bridge | ||||
|     name: app-network | ||||
| @@ -1,24 +0,0 @@ | ||||
| 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 | ||||
| @@ -1,15 +0,0 @@ | ||||
| version: "3.9" | ||||
|  | ||||
| volumes: | ||||
|   qbittorrent-downloads: | ||||
|     name: qbittorrent-downloads | ||||
|   qbittorrent-conf: | ||||
|     name: qbittorrent-conf | ||||
|   jellyfin-config: | ||||
|     name: jellyfin-config | ||||
|   jellyfin-tvseries: | ||||
|     name: jellyfin-tvseries | ||||
|   jellyfin-movies: | ||||
|     name: jellyfin-movies | ||||
|   jellyfin: | ||||
|     name: jellyfin | ||||
| @@ -1,63 +0,0 @@ | ||||
| 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
									
									
								
							
							
						
						
									
										4
									
								
								env/flask_database.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | ||||
| POSTGRES_HOST_AUTH_METHOD=trust | ||||
| POSTGRES_USER=bensuperpc | ||||
| POSTGRES_PASSWORD=nPRh270dKH3hz%6HS2$X%8F3fqoQ*Fex | ||||
| POSTGRES_DB=website | ||||
							
								
								
									
										7
									
								
								env/flask_website.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								env/flask_website.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +0,0 @@ | ||||
| FLASK_DEBUG=1 | ||||
|  | ||||
| # Acces to the database | ||||
| POSTGRES_URL=flask_db:5432 | ||||
| POSTGRES_USER=bensuperpc | ||||
| POSTGRES_PW=nPRh270dKH3hz%6HS2$X%8F3fqoQ*Fex | ||||
| POSTGRES_DB=website | ||||
							
								
								
									
										3
									
								
								env/pgadmin.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								env/pgadmin.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +0,0 @@ | ||||
| PGADMIN_DEFAULT_EMAIL=bensuperpc@bensuperpc.org | ||||
| PGADMIN_DEFAULT_PASSWORD=LmRVf9DY291ez7B^^%2RntHcsCrJ5fQ! | ||||
| #PGADMIN_ENABLE_TLS | ||||
							
								
								
									
										4
									
								
								env/phpmyadmin.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/phpmyadmin.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | ||||
| MYSQL_ROOT_PASSWORD=g1qQWxTXyFXIKpAfbE0h5bxn&prr4zfd | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt | ||||
| PMA_HOST=db | ||||
							
								
								
									
										4
									
								
								env/wordpress.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/wordpress.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | ||||
| 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
									
									
								
							
							
						
						
									
										4
									
								
								env/wp_database.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | ||||
| MARIADB_ROOT_PASSWORD=g1qQWxTXyFXIKpAfbE0h5bxn&prr4zfd | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=4Xnc7FB7902%*w9PW4y9&anQ5&hQdTzt | ||||
| MARIADB_DATABASE=wordpress | ||||
							
								
								
									
										15
									
								
								infrastructure/caddy/config/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								infrastructure/caddy/config/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| { | ||||
| 	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/* | ||||
							
								
								
									
										7
									
								
								infrastructure/caddy/config/bensuperpc.com/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								infrastructure/caddy/config/bensuperpc.com/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| bensuperpc.com {   | ||||
|   	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.com {   | ||||
|   	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
							
								
								
									
										7
									
								
								infrastructure/caddy/config/bensuperpc.fr/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								infrastructure/caddy/config/bensuperpc.fr/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| bensuperpc.fr { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.fr { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
							
								
								
									
										19
									
								
								infrastructure/caddy/config/bensuperpc.net/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								infrastructure/caddy/config/bensuperpc.net/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| 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 | ||||
| } | ||||
							
								
								
									
										169
									
								
								infrastructure/caddy/config/bensuperpc.org/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								infrastructure/caddy/config/bensuperpc.org/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,169 @@ | ||||
| www.bensuperpc.org { | ||||
| 	reverse_proxy homepage:3000 | ||||
| } | ||||
|  | ||||
| bensuperpc.org { | ||||
| 	redir https://www.bensuperpc.org permanent | ||||
| } | ||||
|  | ||||
| homepage.bensuperpc.org { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| wordpress.bensuperpc.org { | ||||
| 	root * /var/www/html | ||||
| 	php_fastcgi wordpress:9000 | ||||
|  | ||||
| 	file_server | ||||
| 	encode zstd gzip | ||||
|  | ||||
| 	@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=()" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| it-tools.bensuperpc.org { | ||||
| 	# Load balance between 2 instances | ||||
| 	reverse_proxy { | ||||
| 		to it-tools0:80 it-tools1:80 | ||||
| 		lb_policy round_robin | ||||
| 		lb_retries 3 | ||||
| 		lb_try_interval 1s | ||||
| 	} | ||||
| } | ||||
|  | ||||
| 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 | ||||
| } | ||||
|  | ||||
| picoshare.bensuperpc.org { | ||||
| 	reverse_proxy picoshare:4001 | ||||
| } | ||||
|  | ||||
| syncthing.bensuperpc.org { | ||||
| 	reverse_proxy syncthing:8384 { | ||||
| 		header_up Host {upstream_hostport} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| 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 | ||||
| } | ||||
|  | ||||
| dozzle.bensuperpc.org { | ||||
| 	reverse_proxy dozzle:8080 | ||||
| } | ||||
|  | ||||
| yacht.bensuperpc.org { | ||||
| 	reverse_proxy yacht:8000 | ||||
| } | ||||
|  | ||||
| projectsend.bensuperpc.org { | ||||
| 	reverse_proxy projectsend:80 | ||||
| } | ||||
|  | ||||
| dufs.bensuperpc.org { | ||||
| 	reverse_proxy dufs:5000 | ||||
| } | ||||
|  | ||||
| #stirlingpdf.bensuperpc.org { | ||||
| #	reverse_proxy stirlingpdf:8080 | ||||
| #} | ||||
|  | ||||
| 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 /nohero https://youtu.be/4DuUejBkMqE?si=bkB8G6PHwCp56jxb permanent | ||||
| 	redir /indochine https://youtu.be/M7X6oYg6iro?si=ZRarm3qamTJ8vIJ0 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 | ||||
| } | ||||
							
								
								
									
										7
									
								
								infrastructure/caddy/config/bensuperpc.ovh/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								infrastructure/caddy/config/bensuperpc.ovh/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| bensuperpc.ovh { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.ovh { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
							
								
								
									
										62
									
								
								infrastructure/caddy/docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								infrastructure/caddy/docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| 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 | ||||
|  | ||||
|   caddy_backup: | ||||
|     image: mazzolino/restic:latest | ||||
|     container_name: caddy_backup | ||||
|     profiles: | ||||
|       - caddy | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     env_file: | ||||
|       - ./caddy/env/caddy_backup.env | ||||
|     volumes: | ||||
|       - caddy_backup:/mnt/restic | ||||
|       - caddy_data:/data:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   caddy_data: | ||||
|     name: caddy_data | ||||
|   caddy_config: | ||||
|     name: caddy_config | ||||
|   caddy_backup: | ||||
|     name: caddy_backup | ||||
|  | ||||
| networks: | ||||
|   infra-network: | ||||
|     driver: bridge | ||||
|     name: infra-network | ||||
							
								
								
									
										0
									
								
								infrastructure/caddy/env/caddy.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								infrastructure/caddy/env/caddy.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										9
									
								
								infrastructure/caddy/env/caddy_backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								infrastructure/caddy/env/caddy_backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| #RUN_ON_STARTUP=true | ||||
| BACKUP_CRON=*/30 * * * * | ||||
| RESTIC_REPOSITORY=/mnt/restic | ||||
| RESTIC_BACKUP_SOURCES=/data | ||||
| RESTIC_PASSWORD=YFQh8v3Wi95v0p6h88D4u8C8z4gLfdMw | ||||
| 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% | ||||
							
								
								
									
										18
									
								
								infrastructure/dozzle/docker-compose.dozzle.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								infrastructure/dozzle/docker-compose.dozzle.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| services: | ||||
|   # dozzle | ||||
|   dozzle: | ||||
|     image: amir20/dozzle:latest | ||||
|     container_name: dozzle | ||||
|     profiles: | ||||
|       - dozzle | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./dozzle/env/dozzle.env | ||||
|     volumes: | ||||
|       - /var/run/docker.sock:/var/run/docker.sock:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
							
								
								
									
										1
									
								
								infrastructure/dozzle/env/dozzle.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								infrastructure/dozzle/env/dozzle.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| DOZZLE_LEVEL=info | ||||
							
								
								
									
										22
									
								
								infrastructure/dufs/docker-compose.dufs.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								infrastructure/dufs/docker-compose.dufs.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| services: | ||||
|   # dufs | ||||
|   dufs: | ||||
|     image: sigoden/dufs:latest | ||||
|     container_name: dufs | ||||
|     profiles: | ||||
|       - dufs | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./dufs/env/dufs.env | ||||
|     volumes: | ||||
|       - dufs_data:/data | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   dufs_data: | ||||
|     name: dufs_data | ||||
							
								
								
									
										7
									
								
								infrastructure/dufs/env/dufs.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								infrastructure/dufs/env/dufs.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| DUFS_BIND=0.0.0.0 | ||||
| DUFS_PORT=5000 | ||||
| DUFS_SERVE_PATH=/data | ||||
| DUFS_HIDDEN=tmp,*.log,*.lock | ||||
| DUFS_ALLOW_ALL=true | ||||
| DUFS_COMPRESS=medium | ||||
| DUFS_AUTH="admin:heqihlOfBmJDESGFlpbPi7P7Mi6F7RkV@/:rw|@/" | ||||
							
								
								
									
										98
									
								
								infrastructure/gitea/config/gitea_runner/config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								infrastructure/gitea/config/gitea_runner/config.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| # 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: | ||||
							
								
								
									
										72
									
								
								infrastructure/gitea/docker-compose.gitea.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								infrastructure/gitea/docker-compose.gitea.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| 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
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								infrastructure/gitea/env/gitea-runner.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| 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
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								infrastructure/gitea/env/gitea.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| 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
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/gitea/env/gitea_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| MYSQL_DATABASE=gitea | ||||
							
								
								
									
										47
									
								
								infrastructure/homepage/config/bookmarks.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								infrastructure/homepage/config/bookmarks.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/latest/configs/bookmarks | ||||
|  | ||||
| - Developer: | ||||
|     - Github: | ||||
|         - abbr: GH | ||||
|           href: https://github.com/bensuperpc | ||||
|           description: github.com | ||||
|  | ||||
| - Social: | ||||
|     - Reddit: | ||||
|         - abbr: RE | ||||
|           href: https://reddit.com/u/bensuperpc | ||||
|           description: reddit.com | ||||
|     - Twitter: | ||||
|         - abbr: TW | ||||
|           href: https://twitter.com/bensuperpc | ||||
|           description: twitter.com | ||||
|     - Bluesky: | ||||
|         - abbr: BS | ||||
|           href: https://bsky.app/profile/bensuperpc.bsky.social | ||||
|           description: bsky.app | ||||
|  | ||||
| - Entertainment: | ||||
|     - YouTube: | ||||
|         - abbr: YT | ||||
|           href: https://youtube.com/c/bensuperpc | ||||
|           description: youtube.com | ||||
|     - Twitch: | ||||
|         - abbr: TW | ||||
|           href: https://twitch.tv/bensuperpc | ||||
|           description: twitch.tv | ||||
|  | ||||
| - Friends: | ||||
|     - Gnous: | ||||
|         - abbr: Gn | ||||
|           href: https://gnous.eu/ | ||||
|           description: gnous.eu | ||||
|     - Imagisphe: | ||||
|         - abbr: IM | ||||
|           href: https://imagisphe.re/ | ||||
|           description: imagisphe.re | ||||
|     - Greep: | ||||
|         - abbr: GP | ||||
|           href: https://greep.fr/#/ | ||||
|           description: greep.fr | ||||
							
								
								
									
										0
									
								
								infrastructure/homepage/config/custom.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								infrastructure/homepage/config/custom.css
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								infrastructure/homepage/config/custom.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								infrastructure/homepage/config/custom.js
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										10
									
								
								infrastructure/homepage/config/docker.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								infrastructure/homepage/config/docker.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/latest/configs/docker/ | ||||
|  | ||||
| #jellyfin: | ||||
| #  host: jellyfin | ||||
| #  port: 8096 | ||||
|  | ||||
| #my-docker: | ||||
| #   socket: /var/run/docker.sock | ||||
							
								
								
									
										2
									
								
								infrastructure/homepage/config/kubernetes.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								infrastructure/homepage/config/kubernetes.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| --- | ||||
| # sample kubernetes config | ||||
							
								
								
									
										135
									
								
								infrastructure/homepage/config/services.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								infrastructure/homepage/config/services.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,135 @@ | ||||
| --- | ||||
| # 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://wordpress.bensuperpc.org/ | ||||
|         description: Wordpress | ||||
|         ping: wordpress.bensuperpc.org | ||||
|         container: wordpress | ||||
|     - uptime-kuma: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/uptime-kuma.png | ||||
|         href: https://uptimekuma.bensuperpc.org/ | ||||
|         description: Uptime Kuma | ||||
|         ping: uptimekuma.bensuperpc.org | ||||
|         container: uptime-kuma | ||||
|     - yacht: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/yacht.png | ||||
|         href: https://yacht.bensuperpc.org/ | ||||
|         description: Yacht | ||||
|         ping: yacht.bensuperpc.org | ||||
|         container: yacht | ||||
|     - dozzle: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/dozzle.png | ||||
|         href: https://dozzle.bensuperpc.org/ | ||||
|         description: Dozzle | ||||
|         ping: dozzle.bensuperpc.org | ||||
|         container: dozzle | ||||
|  | ||||
| - Sharing: | ||||
|     - jellyfin: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyfin.png | ||||
|         href: https://jellyfin.bensuperpc.org/ | ||||
|         description: Jellyfin | ||||
|         ping: jellyfin.bensuperpc.org | ||||
|         container: jellyfin | ||||
|     - psitransfer: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/psitransfer.png | ||||
|         href: https://psitransfer.bensuperpc.org/ | ||||
|         description: PsiTransfer | ||||
|         ping: psitransfer.bensuperpc.org | ||||
|         container: psitransfer | ||||
|     - picoshare: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/picoshare.png | ||||
|         href: https://picoshare.bensuperpc.org/ | ||||
|         description: PicoShare | ||||
|         ping: picoshare.bensuperpc.org | ||||
|         container: picoshare | ||||
|     - privatebin: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/privatebin.png | ||||
|         href: https://privatebin.bensuperpc.org/ | ||||
|         description: PrivateBin | ||||
|         ping: privatebin.bensuperpc.org | ||||
|         container: privatebin | ||||
|     - qbittorrent: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/qbittorrent.png | ||||
|         href: https://qbittorrent.bensuperpc.org/ | ||||
|         description: qBittorrent | ||||
|         ping: qbittorrent.bensuperpc.org | ||||
|         container: qbittorrent | ||||
|     - syncthing: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/syncthing.png | ||||
|         href: https://syncthing.bensuperpc.org/ | ||||
|         description: Syncthing | ||||
|         ping: syncthing.bensuperpc.org | ||||
|         container: syncthing | ||||
|     - transmission: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/transmission.png | ||||
|         href: https://transmission.bensuperpc.org/ | ||||
|         description: Transmission | ||||
|         ping: transmission.bensuperpc.org | ||||
|         container: transmission | ||||
|     - projectsend: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/projectsend.png | ||||
|         href: https://projectsend.bensuperpc.org/ | ||||
|         description: ProjectSend | ||||
|         ping: projectsend.bensuperpc.org | ||||
|         container: projectsend | ||||
|     - dufs: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/dufs.png | ||||
|         href: https://dufs.bensuperpc.org/ | ||||
|         description: Dufs | ||||
|         ping: dufs.bensuperpc.org | ||||
|         container: dufs | ||||
|  | ||||
| - 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 | ||||
|         ping: it-tools.bensuperpc.org | ||||
|         container: it-tools0 | ||||
| #    - stirlingpdf: | ||||
|         #icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/stirlingpdf.png | ||||
| #        href: https://stirlingpdf.bensuperpc.org/ | ||||
| #        description: StirlingPDF | ||||
| #        ping: stirlingpdf.bensuperpc.org | ||||
| #        container: stirlingpdf | ||||
|  | ||||
|     - gitea: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/gitea.png | ||||
|         href: https://gitea.bensuperpc.org/ | ||||
|         description: Gitea | ||||
|         ping: gitea.bensuperpc.org | ||||
|         container: gitea | ||||
|  | ||||
| - Games: | ||||
|     - minecraft: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/minecraft.png | ||||
| #        href: https://minecraft.bensuperpc.org/ | ||||
|         description: Minecraft server | ||||
| #        ping: minecraft.bensuperpc.org | ||||
|         container: minecraft-server | ||||
|     - 7dtd: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/7dtd.png | ||||
| #        href: https://7dtd.bensuperpc.org/ | ||||
|         description: 7 Days to Die server | ||||
| #        ping: 7dtd.bensuperpc.org | ||||
|         container: 7dtd-server | ||||
| - Others: | ||||
|     - gitea-runner: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/gitea.png | ||||
| #        href: https://gitea.bensuperpc.org/ | ||||
|         description: Gitea Runner | ||||
|         ping: gitea.bensuperpc.org | ||||
|         container: gitea-runner | ||||
|  | ||||
|     - watchtower: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/watchtower.png | ||||
|         #href: https://watchtower.bensuperpc.org/ | ||||
|         description: Watchtower | ||||
|         ping: watchtower.bensuperpc.org | ||||
|         container: watchtower | ||||
|      | ||||
							
								
								
									
										60
									
								
								infrastructure/homepage/config/settings.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								infrastructure/homepage/config/settings.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/latest/configs/settings | ||||
|  | ||||
| title: Bensuperpc | ||||
|  | ||||
| base: https://www.bensuperpc.org | ||||
|  | ||||
| favicon: /images/favicon.ico | ||||
|  | ||||
| logpath: /app/logs | ||||
|  | ||||
| background:  | ||||
|   image: /images/electronic.jpg | ||||
|   blur: md | ||||
|   opacity: 50 | ||||
|   brightness: 50 | ||||
|  | ||||
| theme: dark | ||||
| color: slate | ||||
|  | ||||
| language: en | ||||
|  | ||||
| layout: | ||||
|   Personal: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Media: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Sharing: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Utils: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|     initiallyCollapsed: false | ||||
|   Others: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|     initiallyCollapsed: false | ||||
|   Games: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|     initiallyCollapsed: false | ||||
|  | ||||
| quicklaunch: | ||||
|   searchDescriptions: true | ||||
|   hideInternetSearch: false | ||||
|   hideVisitURL: false | ||||
|  | ||||
| hideVersion: true | ||||
|  | ||||
| headerStyle: boxed | ||||
|  | ||||
| useEqualHeights: true | ||||
|  | ||||
| #providers: | ||||
| #  openweathermap: openweathermapapikey | ||||
| #  weatherapi: weatherapiapikey | ||||
							
								
								
									
										19
									
								
								infrastructure/homepage/config/widgets.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								infrastructure/homepage/config/widgets.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| --- | ||||
| # 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 | ||||
							
								
								
									
										25
									
								
								infrastructure/homepage/docker-compose.homepage.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								infrastructure/homepage/docker-compose.homepage.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| 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
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								infrastructure/homepage/env/homepage.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | ||||
| #PSITRANSFER_PORT=3000 | ||||
							
								
								
									
										
											BIN
										
									
								
								infrastructure/homepage/image/electronic.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								infrastructure/homepage/image/electronic.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 569 KiB | 
							
								
								
									
										
											BIN
										
									
								
								infrastructure/homepage/image/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								infrastructure/homepage/image/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 295 KiB | 
							
								
								
									
										44
									
								
								infrastructure/it-tools/docker-compose.it-tools.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								infrastructure/it-tools/docker-compose.it-tools.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| services: | ||||
|   # it-tools | ||||
|   it-tools0: | ||||
|     image: corentinth/it-tools:latest | ||||
|     container_name: it-tools0 | ||||
|     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 | ||||
|   it-tools1: | ||||
|     image: corentinth/it-tools:latest | ||||
|     container_name: it-tools1 | ||||
|     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 | ||||
							
								
								
									
										43
									
								
								infrastructure/jellyfin/docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								infrastructure/jellyfin/docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| 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 | ||||
							
								
								
									
										0
									
								
								infrastructure/jellyfin/env/jellyfin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								infrastructure/jellyfin/env/jellyfin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										39
									
								
								infrastructure/picoshare/docker-compose.picoshare.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								infrastructure/picoshare/docker-compose.picoshare.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| services: | ||||
|   # picoshare | ||||
|   picoshare: | ||||
|     image: mtlynch/picoshare:latest | ||||
|     container_name: picoshare | ||||
|     profiles: | ||||
|       - picoshare | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./picoshare/env/picoshare.env | ||||
|     volumes: | ||||
|       - picoshare_data:/data | ||||
|       - picoshare_tmpfs:/tmp | ||||
|     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: | ||||
|   picoshare_data: | ||||
|     name: picoshare_data | ||||
|   picoshare_tmpfs: | ||||
|     name: picoshare_tmpfs | ||||
|     driver: local | ||||
|     driver_opts: | ||||
|       type: tmpfs | ||||
|       device: tmpfs | ||||
|       o: size=1g | ||||
							
								
								
									
										3
									
								
								infrastructure/picoshare/env/picoshare.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/picoshare/env/picoshare.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| PS_SHARED_SECRET=CBuS4DJLqIe93xF1KGYRrnhxUFBqLD2n | ||||
| PORT=4001 | ||||
| PS_BEHIND_PROXY=true | ||||
							
								
								
									
										283
									
								
								infrastructure/privatebin/config/conf.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										283
									
								
								infrastructure/privatebin/config/conf.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,283 @@ | ||||
| ;<?php http_response_code(403); /* | ||||
| ; config file for PrivateBin | ||||
| ; | ||||
| ; An explanation of each setting can be find online at https://github.com/PrivateBin/PrivateBin/wiki/Configuration. | ||||
|  | ||||
| [main] | ||||
| ; (optional) set a project name to be displayed on the website | ||||
| ; name = "PrivateBin" | ||||
|  | ||||
| ; The full URL, with the domain name and directories that point to the | ||||
| ; PrivateBin files, including an ending slash (/). This URL is essential to | ||||
| ; allow Opengraph images to be displayed on social networks. | ||||
| ; basepath = "https://privatebin.example.com/" | ||||
|  | ||||
| ; enable or disable the discussion feature, defaults to true | ||||
| discussion = true | ||||
|  | ||||
| ; preselect the discussion feature, defaults to false | ||||
| opendiscussion = false | ||||
|  | ||||
| ; enable or disable the display of dates & times in the comments, defaults to true | ||||
| ; Note that internally the creation time will still get tracked in order to sort | ||||
| ; the comments by creation time, but you can choose not to display them. | ||||
| ; discussiondatedisplay = false | ||||
|  | ||||
| ; enable or disable the password feature, defaults to true | ||||
| password = true | ||||
|  | ||||
| ; enable or disable the file upload feature, defaults to false | ||||
| fileupload = false | ||||
|  | ||||
| ; preselect the burn-after-reading feature, defaults to false | ||||
| burnafterreadingselected = false | ||||
|  | ||||
| ; which display mode to preselect by default, defaults to "plaintext" | ||||
| ; make sure the value exists in [formatter_options] | ||||
| defaultformatter = "plaintext" | ||||
|  | ||||
| ; (optional) set a syntax highlighting theme, as found in css/prettify/ | ||||
| ; syntaxhighlightingtheme = "sons-of-obsidian" | ||||
|  | ||||
| ; size limit per paste or comment in bytes, defaults to 10 Mebibytes | ||||
| sizelimit = 10485760 | ||||
|  | ||||
| ; template to include, default is "bootstrap" (tpl/bootstrap.php), also | ||||
| ; available are "page" (tpl/page.php), the classic ZeroBin style and several | ||||
| ; bootstrap variants: "bootstrap-dark", "bootstrap-compact", "bootstrap-page", | ||||
| ; which can be combined with "-dark" and "-compact" for "bootstrap-dark-page" | ||||
| ; and finally "bootstrap-compact-page" - previews at: | ||||
| ; https://privatebin.info/screenshots.html | ||||
| template = "bootstrap-dark" | ||||
|  | ||||
| ; (optional) info text to display | ||||
| ; use single, instead of double quotes for HTML attributes | ||||
| ;info = "More information on the <a href='https://privatebin.info/'>project page</a>." | ||||
|  | ||||
| ; (optional) notice to display | ||||
| ; notice = "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service." | ||||
|  | ||||
| ; by default PrivateBin will guess the visitors language based on the browsers | ||||
| ; settings. Optionally you can enable the language selection menu, which uses | ||||
| ; a session cookie to store the choice until the browser is closed. | ||||
| languageselection = false | ||||
|  | ||||
| ; set the language your installs defaults to, defaults to English | ||||
| ; if this is set and language selection is disabled, this will be the only language | ||||
| ; languagedefault = "en" | ||||
|  | ||||
| ; (optional) URL shortener address to offer after a new paste is created. | ||||
| ; It is suggested to only use this with self-hosted shorteners as this will leak | ||||
| ; the pastes encryption key. | ||||
| ; urlshortener = "https://shortener.example.com/api?link=" | ||||
|  | ||||
| ; (optional) Let users create a QR code for sharing the paste URL with one click. | ||||
| ; It works both when a new paste is created and when you view a paste. | ||||
| ; qrcode = true | ||||
|  | ||||
| ; (optional) Let users send an email sharing the paste URL with one click. | ||||
| ; It works both when a new paste is created and when you view a paste. | ||||
| ; email = true | ||||
|  | ||||
| ; (optional) IP based icons are a weak mechanism to detect if a comment was from | ||||
| ; a different user when the same username was used in a comment. It might get | ||||
| ; used to get the IP of a comment poster if the server salt is leaked and a | ||||
| ; SHA512 HMAC rainbow table is generated for all (relevant) IPs. | ||||
| ; Can be set to one these values: | ||||
| ; "none" / "identicon" (default) / "jdenticon" / "vizhash". | ||||
| ; icon = "none" | ||||
|  | ||||
| ; Content Security Policy headers allow a website to restrict what sources are | ||||
| ; allowed to be accessed in its context. You need to change this if you added | ||||
| ; custom scripts from third-party domains to your templates, e.g. tracking | ||||
| ; scripts or run your site behind certain DDoS-protection services. | ||||
| ; Check the documentation at https://content-security-policy.com/ | ||||
| ; Notes: | ||||
| ; - If you use any bootstrap theme, you can remove the allow-popups from the | ||||
| ;   sandbox restrictions. | ||||
| ; - If you use the bootstrap5 theme, you must change default-src to 'self' to | ||||
| ;   enable display of the svg icons | ||||
| ; - By default this disallows to load images from third-party servers, e.g. when | ||||
| ;   they are embedded in pastes. If you wish to allow that, you can adjust the | ||||
| ;   policy here. See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-it-load-embedded-images | ||||
| ;   for details. | ||||
| ; - The 'unsafe-eval' is used in two cases; to check if the browser supports | ||||
| ;   async functions and display an error if not and for Chrome to enable | ||||
| ;   webassembly support (used for zlib compression). You can remove it if Chrome | ||||
| ;   doesn't need to be supported and old browsers don't need to be warned. | ||||
| ; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads" | ||||
|  | ||||
| ; stay compatible with PrivateBin Alpha 0.19, less secure | ||||
| ; if enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of | ||||
| ; sha256 in HMAC for the deletion token | ||||
| ; zerobincompatibility = false | ||||
|  | ||||
| ; Enable or disable the warning message when the site is served over an insecure | ||||
| ; connection (insecure HTTP instead of HTTPS), defaults to true. | ||||
| ; Secure transport methods like Tor and I2P domains are automatically whitelisted. | ||||
| ; It is **strongly discouraged** to disable this. | ||||
| ; See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-it-show-me-an-error-about-an-insecure-connection for more information. | ||||
| ; httpwarning = true | ||||
|  | ||||
| ; Pick compression algorithm or disable it. Only applies to pastes/comments | ||||
| ; created after changing the setting. | ||||
| ; Can be set to one these values: "none" / "zlib" (default). | ||||
| ; compression = "zlib" | ||||
|  | ||||
| [expire] | ||||
| ; expire value that is selected per default | ||||
| ; make sure the value exists in [expire_options] | ||||
| default = "1week" | ||||
|  | ||||
| [expire_options] | ||||
| ; Set each one of these to the number of seconds in the expiration period, | ||||
| ; or 0 if it should never expire | ||||
| 5min = 300 | ||||
| 10min = 600 | ||||
| 1hour = 3600 | ||||
| 1day = 86400 | ||||
| 1week = 604800 | ||||
| ; Well this is not *exactly* one month, it's 30 days: | ||||
| 1month = 2592000 | ||||
| 1year = 31536000 | ||||
| never = 0 | ||||
|  | ||||
| [formatter_options] | ||||
| ; Set available formatters, their order and their labels | ||||
| plaintext = "Plain Text" | ||||
| syntaxhighlighting = "Source Code" | ||||
| markdown = "Markdown" | ||||
|  | ||||
| [traffic] | ||||
| ; time limit between calls from the same IP address in seconds | ||||
| ; Set this to 0 to disable rate limiting. | ||||
| limit = 10 | ||||
|  | ||||
| ; (optional) Set IPs addresses (v4 or v6) or subnets (CIDR) which are exempted | ||||
| ; from the rate-limit. Invalid IPs will be ignored. If multiple values are to | ||||
| ; be exempted, the list needs to be comma separated. Leave unset to disable | ||||
| ; exemptions. | ||||
| ; exempted = "1.2.3.4,10.10.10/24" | ||||
|  | ||||
| ; (optional) If you want only some source IP addresses (v4 or v6) or subnets | ||||
| ; (CIDR) to be allowed to create pastes, set these here. Invalid IPs will be | ||||
| ; ignored. If multiple values are to be exempted, the list needs to be comma | ||||
| ; separated. Leave unset to allow anyone to create pastes. | ||||
| ; creators = "1.2.3.4,10.10.10/24" | ||||
|  | ||||
| ; (optional) if your website runs behind a reverse proxy or load balancer, | ||||
| ; set the HTTP header containing the visitors IP address, i.e. X_FORWARDED_FOR | ||||
| ; header = "X_FORWARDED_FOR" | ||||
|  | ||||
| [purge] | ||||
| ; minimum time limit between two purgings of expired pastes, it is only | ||||
| ; triggered when pastes are created | ||||
| ; Set this to 0 to run a purge every time a paste is created. | ||||
| limit = 300 | ||||
|  | ||||
| ; maximum amount of expired pastes to delete in one purge | ||||
| ; Set this to 0 to disable purging. Set it higher, if you are running a large | ||||
| ; site | ||||
| batchsize = 10 | ||||
|  | ||||
| [model] | ||||
| ; name of data model class to load and directory for storage | ||||
| ; the default model "Filesystem" stores everything in the filesystem | ||||
| class = Filesystem | ||||
| [model_options] | ||||
| dir = PATH "data" | ||||
|  | ||||
| ;[model] | ||||
| ; example of a Google Cloud Storage configuration | ||||
| ;class = GoogleCloudStorage | ||||
| ;[model_options] | ||||
| ;bucket = "my-private-bin" | ||||
| ;prefix = "pastes" | ||||
| ;uniformacl = false | ||||
|  | ||||
| ;[model] | ||||
| ; example of DB configuration for MySQL | ||||
| ;class = Database | ||||
| ;[model_options] | ||||
| ;dsn = "mysql:host=localhost;dbname=privatebin;charset=UTF8" | ||||
| ;tbl = "privatebin_"	; table prefix | ||||
| ;usr = "privatebin" | ||||
| ;pwd = "Z3r0P4ss" | ||||
| ;opt[12] = true	  ; PDO::ATTR_PERSISTENT | ||||
|  | ||||
| ;[model] | ||||
| ; example of DB configuration for SQLite | ||||
| ;class = Database | ||||
| ;[model_options] | ||||
| ;dsn = "sqlite:" PATH "data/db.sq3" | ||||
| ;usr = null | ||||
| ;pwd = null | ||||
| ;opt[12] = true	; PDO::ATTR_PERSISTENT | ||||
|  | ||||
| ;[model] | ||||
| ; example of DB configuration for PostgreSQL | ||||
| ;class = Database | ||||
| ;[model_options] | ||||
| ;dsn = "pgsql:host=localhost;dbname=privatebin" | ||||
| ;tbl = "privatebin_"     ; table prefix | ||||
| ;usr = "privatebin" | ||||
| ;pwd = "Z3r0P4ss" | ||||
| ;opt[12] = true    ; PDO::ATTR_PERSISTENT | ||||
|  | ||||
| ;[model] | ||||
| ; example of S3 configuration for Rados gateway / CEPH | ||||
| ;class = S3Storage | ||||
| ;[model_options] | ||||
| ;region = "" | ||||
| ;version = "2006-03-01" | ||||
| ;endpoint = "https://s3.my-ceph.invalid" | ||||
| ;use_path_style_endpoint = true | ||||
| ;bucket = "my-bucket" | ||||
| ;accesskey = "my-rados-user" | ||||
| ;secretkey = "my-rados-pass" | ||||
|  | ||||
| ;[model] | ||||
| ; example of S3 configuration for AWS | ||||
| ;class = S3Storage | ||||
| ;[model_options] | ||||
| ;region = "eu-central-1" | ||||
| ;version = "latest" | ||||
| ;bucket = "my-bucket" | ||||
| ;accesskey = "access key id" | ||||
| ;secretkey = "secret access key" | ||||
|  | ||||
| ;[model] | ||||
| ; example of S3 configuration for AWS using its SDK default credential provider chain | ||||
| ; if relying on environment variables, the AWS SDK will look for the following: | ||||
| ; - AWS_ACCESS_KEY_ID | ||||
| ; - AWS_SECRET_ACCESS_KEY | ||||
| ; - AWS_SESSION_TOKEN (if needed) | ||||
| ; for more details, see https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html#default-credential-chain | ||||
| ;class = S3Storage | ||||
| ;[model_options] | ||||
| ;region = "eu-central-1" | ||||
| ;version = "latest" | ||||
| ;bucket = "my-bucket" | ||||
|  | ||||
| [yourls] | ||||
| ; When using YOURLS as a "urlshortener" config item: | ||||
| ; - By default, "urlshortener" will point to the YOURLS API URL, with or without | ||||
| ;   credentials, and will be visible in public on the PrivateBin web page. | ||||
| ;   Only use this if you allow short URL creation without credentials. | ||||
| ; - Alternatively, using the parameters in this section ("signature" and | ||||
| ;   "apiurl"), "urlshortener" needs to point to the base URL of your PrivateBin | ||||
| ;   instance with "?shortenviayourls&link=" appended. For example: | ||||
| ;   urlshortener = "${basepath}?shortenviayourls&link=" | ||||
| ;   This URL will in turn call YOURLS on the server side, using the URL from | ||||
| ;   "apiurl" and the "access signature" from the "signature" parameters below. | ||||
|  | ||||
| ; (optional) the "signature" (access key) issued by YOURLS for the using account | ||||
| ; signature = "" | ||||
| ; (optional) the URL of the YOURLS API, called to shorten a PrivateBin URL | ||||
| ; apiurl = "https://yourls.example.com/yourls-api.php" | ||||
|  | ||||
| ;[sri] | ||||
| ; Subresource integrity (SRI) hashes used in template files. Uncomment and set | ||||
| ; these for all js files used. See: | ||||
| ; https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-i-have-changed-some-javascript-files | ||||
| ;privatebin.js = sha512-[…] | ||||
							
								
								
									
										30
									
								
								infrastructure/privatebin/docker-compose.privatebin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								infrastructure/privatebin/docker-compose.privatebin.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| 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 | ||||
|       - ./privatebin/config/conf.php:/srv/cfg/conf.php:ro | ||||
|     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 | ||||
							
								
								
									
										47
									
								
								infrastructure/projectsend/docker-compose.projectsend.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								infrastructure/projectsend/docker-compose.projectsend.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| services: | ||||
|   # projectsend | ||||
|   projectsend: | ||||
|     image: linuxserver/projectsend:latest | ||||
|     container_name: projectsend | ||||
|     profiles: | ||||
|       - projectsend | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./projectsend/env/projectsend.env | ||||
|     volumes: | ||||
|       - /var/run/docker.sock:/var/run/docker.sock | ||||
|       - projectsend_config:/config | ||||
|       - projectsend_share:/data | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|   # Database projectsend | ||||
|   projectsend_db: | ||||
|     image: mariadb:latest | ||||
|     container_name: projectsend_db | ||||
|     profiles: | ||||
|       - database | ||||
|       - projectsend | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     volumes: | ||||
|       - projectsend_db:/var/lib/mysql:rw | ||||
|     env_file: | ||||
|       - ./projectsend/env/projectsend_db.env | ||||
|     command: '--default-authentication-plugin=mysql_native_password' | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   projectsend_db: | ||||
|     name: projectsend_db | ||||
|   projectsend_config: | ||||
|     name: projectsend_config | ||||
|   projectsend_share: | ||||
|     name: projectsend_share | ||||
							
								
								
									
										1
									
								
								infrastructure/projectsend/env/projectsend.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								infrastructure/projectsend/env/projectsend.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MAX_UPLOAD=50000 | ||||
							
								
								
									
										4
									
								
								infrastructure/projectsend/env/projectsend_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/projectsend/env/projectsend_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| MARIADB_ROOT_PASSWORD=8O34297GrBfT3Ld34Lfg9mpotmZwbJtt | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=wdSUa1JEZhXie5AJ5NcX1w73xmpO12EY | ||||
| MARIADB_DATABASE=projectsend | ||||
							
								
								
									
										31
									
								
								infrastructure/psitransfer/docker-compose.psitransfer.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								infrastructure/psitransfer/docker-compose.psitransfer.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| 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 | ||||
							
								
								
									
										2
									
								
								infrastructure/psitransfer/env/psitransfer.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								infrastructure/psitransfer/env/psitransfer.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | ||||
| #PSITRANSFER_PORT=3000 | ||||
							
								
								
									
										25
									
								
								infrastructure/qbittorrent/docker-compose.qbittorrent.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								infrastructure/qbittorrent/docker-compose.qbittorrent.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| 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 | ||||
							
								
								
									
										5
									
								
								infrastructure/qbittorrent/env/qbittorrent.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								infrastructure/qbittorrent/env/qbittorrent.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| PUID=1000 | ||||
| PGID=1000 | ||||
| TZ=Etc/UTC | ||||
| WEBUI_PORT=8080 | ||||
| TORRENTING_PORT=6881 | ||||
							
								
								
									
										26
									
								
								infrastructure/stirlingpdf/docker-compose.stirlingpdf.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								infrastructure/stirlingpdf/docker-compose.stirlingpdf.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| services: | ||||
|   # stirlingpdf | ||||
|   stirlingpdf: | ||||
|     image: frooodle/s-pdf:latest | ||||
|     container_name: stirlingpdf | ||||
|     profiles: | ||||
|       - stirlingpdf | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./stirlingpdf/env/stirlingpdf.env | ||||
|     volumes: | ||||
|       - stirlingpdf_config:/configs | ||||
|       - stirlingpdf_tessdata:/usr/share/tessdata | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     read_only: false | ||||
|  | ||||
| volumes: | ||||
|   stirlingpdf_config: | ||||
|     name: stirlingpdf_config | ||||
|   stirlingpdf_tessdata: | ||||
|     name: stirlingpdf_tessdata | ||||
							
								
								
									
										6
									
								
								infrastructure/stirlingpdf/env/stirlingpdf.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								infrastructure/stirlingpdf/env/stirlingpdf.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| LANGS=en_GB | ||||
| #DOCKER_ENABLE_SECURITY=true | ||||
| #SECURITY_ENABLE_LOGIN=true | ||||
| # Can be disabled after initial login | ||||
| #SECURITY_INITIALLOGIN_USERNAME=admin | ||||
| #SECURITY_INITIALLOGIN_PASSWORD=admin | ||||
							
								
								
									
										25
									
								
								infrastructure/syncthing/docker-compose.syncthing.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								infrastructure/syncthing/docker-compose.syncthing.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| 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
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								infrastructure/syncthing/env/syncthing.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| PUID=1000 | ||||
| PGID=1000 | ||||
							
								
								
									
										28
									
								
								infrastructure/transmission/docker-compose.transmission.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								infrastructure/transmission/docker-compose.transmission.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| 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 | ||||
							
								
								
									
										5
									
								
								infrastructure/transmission/env/transmission.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								infrastructure/transmission/env/transmission.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| PUID=1000 | ||||
| PGID=1000 | ||||
| TZ=Etc/UTC | ||||
| USER=admin | ||||
| PASS=4vqXCNGG09JUBe7rXkuQS8MG7ovE6Vxj | ||||
							
								
								
									
										20
									
								
								infrastructure/uptime-kuma/docker-compose.uptime-kuma.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								infrastructure/uptime-kuma/docker-compose.uptime-kuma.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| 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 | ||||
							
								
								
									
										16
									
								
								infrastructure/watchtower/docker-compose.watchtower.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								infrastructure/watchtower/docker-compose.watchtower.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| 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 | ||||
							
								
								
									
										3
									
								
								infrastructure/wordpress/config/wordpress/php.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/wordpress/config/wordpress/php.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| memory_limit = 1024M | ||||
| upload_max_filesize = 64M | ||||
| post_max_size = 64M | ||||
							
								
								
									
										17
									
								
								infrastructure/wordpress/docker-compose.adminer.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								infrastructure/wordpress/docker-compose.adminer.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| 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 | ||||
							
								
								
									
										67
									
								
								infrastructure/wordpress/docker-compose.wordpress.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								infrastructure/wordpress/docker-compose.wordpress.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| 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/wordpress_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
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/wordpress/env/adminer.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| ADMINER_DEFAULT_SERVER=wordpress_db | ||||
							
								
								
									
										4
									
								
								infrastructure/wordpress/env/wordpress.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/wordpress/env/wordpress.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| WORDPRESS_DB_USER=bensuperpc | ||||
| WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| WORDPRESS_DB_NAME=wordpress | ||||
| WORDPRESS_DB_HOST=wordpress_db:3306 | ||||
							
								
								
									
										9
									
								
								infrastructure/wordpress/env/wordpress_backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								infrastructure/wordpress/env/wordpress_backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| #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_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/wordpress/env/wordpress_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| MARIADB_DATABASE=wordpress | ||||
							
								
								
									
										23
									
								
								infrastructure/yacht/docker-compose.yacht.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								infrastructure/yacht/docker-compose.yacht.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| services: | ||||
|   # yacht | ||||
|   yacht: | ||||
|     image: selfhostedpro/yacht:latest | ||||
|     container_name: yacht | ||||
|     profiles: | ||||
|       - yacht | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./yacht/env/yacht.env | ||||
|     volumes: | ||||
|       - /var/run/docker.sock:/var/run/docker.sock | ||||
|       - yacht_config:/config | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   yacht_config: | ||||
|     name: yacht_config | ||||
							
								
								
									
										3
									
								
								infrastructure/yacht/env/yacht.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/yacht/env/yacht.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ADMIN_EMAIL=bensuperpc@gmail.com | ||||
| SECRET_KEY=UZvg9nbcGIJlPEB3uI39TAEWyFOz9nm8 | ||||
| #DATABASE_URL=postgresql://user:password@postgresserver/db | ||||
| @@ -1,29 +0,0 @@ | ||||
| server { | ||||
|         listen 80; | ||||
|         listen [::]:80; | ||||
|  | ||||
|         server_name jellyfin.bensuperpc.org www.jellyfin.bensuperpc.org; | ||||
|  | ||||
|         root /var/www/jellyfin; | ||||
|  | ||||
|         location ~ /.well-known/acme-challenge { | ||||
|                 allow all; | ||||
|                 root /var/www/jellyfin; | ||||
|         } | ||||
|  | ||||
|         location / { | ||||
|                 # Proxy main Jellyfin traffic | ||||
|                 proxy_pass http://jellyfin:8096; | ||||
|                 proxy_set_header Host $host; | ||||
|                 proxy_set_header X-Real-IP $remote_addr; | ||||
|                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|                 proxy_set_header X-Forwarded-Proto $scheme; | ||||
|                 proxy_set_header X-Forwarded-Protocol $scheme; | ||||
|                 proxy_set_header X-Forwarded-Host $http_host; | ||||
|  | ||||
|                 # Disable buffering when the nginx proxy gets very resource heavy upon streaming | ||||
|                 proxy_buffering off; | ||||
|         } | ||||
|  | ||||
|         resolver 8.8.8.8; | ||||
| } | ||||
| @@ -1,50 +0,0 @@ | ||||
| server { | ||||
|         listen 80; | ||||
|         listen [::]:80; | ||||
|  | ||||
|         server_name bensuperpc.org www.bensuperpc.org; | ||||
|  | ||||
|         index index.php index.html index.htm; | ||||
|  | ||||
|         root /var/www/wordpress; | ||||
|  | ||||
|         location ~ /.well-known/acme-challenge { | ||||
|                 allow all; | ||||
|                 root /var/www/wordpress; | ||||
|         } | ||||
|  | ||||
|         location / { | ||||
|                 try_files $uri $uri/ /index.php$is_args$args; | ||||
|         } | ||||
|  | ||||
|         location ~ \.php$ { | ||||
|                 try_files $uri =404; | ||||
|                 fastcgi_split_path_info ^(.+\.php)(/.+)$; | ||||
|                 fastcgi_pass wordpress:9000; | ||||
|                 fastcgi_index index.php; | ||||
|                 include fastcgi_params; | ||||
|  | ||||
|                 # Necessary to avoid 404 error when changing the wordpress path | ||||
|                 #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||||
|                 fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; | ||||
|  | ||||
|                 fastcgi_param PATH_INFO $fastcgi_path_info; | ||||
|         } | ||||
|  | ||||
|         location ~ /\.ht { | ||||
|                 deny all; | ||||
|         } | ||||
|          | ||||
|         location = /favicon.ico {  | ||||
|                 log_not_found off; access_log off;  | ||||
|         } | ||||
|         location = /robots.txt {  | ||||
|                 log_not_found off; access_log off; allow all;  | ||||
|         } | ||||
|         location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { | ||||
|                 expires max; | ||||
|                 log_not_found off; | ||||
|         } | ||||
|  | ||||
|         resolver 8.8.8.8; | ||||
| } | ||||
| @@ -1,130 +0,0 @@ | ||||
| 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/ | ||||
| @@ -1,24 +0,0 @@ | ||||
| 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; | ||||
| } | ||||
| @@ -1,24 +0,0 @@ | ||||
| upstream qbittorrent_server { | ||||
|         # ip_hash; | ||||
|         server qbittorrent:8080; | ||||
|         # server qbittorrent:8080 weight=1 max_fails=3 fail_timeout=30s; | ||||
| } | ||||
|  | ||||
| # PHPmyadmin | ||||
| server { | ||||
|         listen 80; | ||||
|         listen [::]:80; | ||||
|         #listen 443; | ||||
|         #listen [::]:443; | ||||
|  | ||||
|         server_name qbittorrent.bensuperpc.org www.qbittorrent.bensuperpc.org; | ||||
|  | ||||
|         location / { | ||||
|                 proxy_pass http://qbittorrent_server; | ||||
|                 proxy_redirect off; | ||||
|                 proxy_set_header X-Forwarded-Host $http_host; | ||||
|                 proxy_set_header X-Forwarded-For  $remote_addr; | ||||
|         } | ||||
|  | ||||
|         resolver 8.8.8.8; | ||||
| } | ||||
| @@ -1,6 +0,0 @@ | ||||
| #server { | ||||
|     # Port number the reverse proxy is listening on | ||||
| #    listen  25565; | ||||
|     # The original Minecraft server address | ||||
| #    proxy_pass  server.example.com:25565; | ||||
| #} | ||||
| @@ -1,28 +0,0 @@ | ||||
| # The path to store the cache files, limit the folder to 100MB | ||||
| fastcgi_cache_path /var/run/nginx-cache-fastcgi levels=1:2 keys_zone=WORDPRESS:100m inactive=120m max_size=1g use_temp_path=off; | ||||
|  | ||||
| # A unique request is defined by this cache key | ||||
| fastcgi_cache_key "$scheme$request_method$host$request_uri"; | ||||
|  | ||||
| # Show the cached version if upstream gives a timeout or a HTTP 500 error | ||||
| fastcgi_cache_use_stale error timeout invalid_header http_500; | ||||
|  | ||||
| # Revalidate items in the cache if they are update  | ||||
| fastcgi_cache_revalidate on; | ||||
|  | ||||
| # Minimum time to store an item in the cache | ||||
| fastcgi_cache_min_uses 3; | ||||
|  | ||||
| # Cache everything for 1 day | ||||
| fastcgi_cache_valid 1d; | ||||
|  | ||||
| # Don't use the following headers to define the cache variables | ||||
| fastcgi_ignore_headers Cache-Control Expires Set-Cookie; | ||||
|  | ||||
| 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 | ||||
| @@ -1,25 +0,0 @@ | ||||
| # The path to store the cache files, limit the folder to 100MB | ||||
| proxy_cache_path /var/run/nginx-cache-proxy levels=1:2 keys_zone=PROXY:100m inactive=120m max_size=1g use_temp_path=off; | ||||
|  | ||||
| # A unique request is defined by this cache key | ||||
| proxy_cache_key "$scheme$request_method$host$request_uri"; | ||||
|  | ||||
| # Show the cached version if upstream gives a timeout or a HTTP 500 error | ||||
| proxy_cache_use_stale error timeout invalid_header http_500; | ||||
|  | ||||
| # Revalidate items in the cache if they are update  | ||||
| proxy_cache_revalidate on; | ||||
|  | ||||
| # Minimum time to store an item in the cache | ||||
| proxy_cache_min_uses 3; | ||||
|  | ||||
| # Cache everything for 1 day | ||||
| proxy_cache_valid 1d; | ||||
|  | ||||
| # Don't use the following headers to define the cache variables | ||||
| proxy_ignore_headers Cache-Control Expires Set-Cookie; | ||||
|  | ||||
| # Increase proxy buffers for large requests | ||||
| proxy_buffer_size 128k; | ||||
| proxy_buffers 4 256k; | ||||
| proxy_busy_buffers_size 256k; | ||||
| @@ -1,20 +0,0 @@ | ||||
| # The path to store the cache files, limit the folder to 100MB | ||||
| uwsgi_cache_path /var/run/nginx-cache-uwsgi levels=1:2 keys_zone=UWSGI:100m inactive=120m max_size=1g use_temp_path=off; | ||||
|  | ||||
| # A unique request is defined by this cache key | ||||
| uwsgi_cache_key "$scheme$request_method$host$request_uri"; | ||||
|  | ||||
| # Show the cached version if upstream gives a timeout or a HTTP 500 error | ||||
| uwsgi_cache_use_stale error timeout invalid_header http_500; | ||||
|  | ||||
| # Revalidate items in the cache if they are update  | ||||
| uwsgi_cache_revalidate on; | ||||
|  | ||||
| # Minimum time to store an item in the cache | ||||
| uwsgi_cache_min_uses 3; | ||||
|  | ||||
| # Cache everything for 1 day | ||||
| uwsgi_cache_valid 1d; | ||||
|  | ||||
| # Don't use the following headers to define the cache variables | ||||
| uwsgi_ignore_headers Cache-Control Expires Set-Cookie; | ||||
| @@ -1,13 +0,0 @@ | ||||
| # Compression config | ||||
| gzip on; | ||||
| gunzip on; | ||||
|  | ||||
| gzip_static on; | ||||
| gzip_min_length 1000; | ||||
| gzip_buffers 4 32k; | ||||
| # gzip_http_version 1.1; | ||||
| gzip_proxied any; | ||||
| gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; | ||||
| gzip_vary on; | ||||
| gzip_comp_level 6; | ||||
| gzip_disable "MSIE [1-6]\.(?!.*SV1)"; | ||||
| @@ -1,15 +0,0 @@ | ||||
| # generated 2022-11-23, Mozilla Guideline v5.6, nginx 1.23, OpenSSL 1.1.1k, modern configuration | ||||
| # https://ssl-config.mozilla.org/#server=nginx&version=1.23&config=modern&openssl=1.1.1k&guideline=5.6 | ||||
|  | ||||
| ssl_session_cache shared:le_nginx_SSL:10m; | ||||
| ssl_session_timeout 1440m; | ||||
| ssl_session_tickets off; | ||||
|  | ||||
| ssl_protocols TLSv1.3; | ||||
| ssl_prefer_server_ciphers off; | ||||
|  | ||||
| add_header Strict-Transport-Security "max-age=63072000" always; | ||||
|  | ||||
| # OCSP stapling | ||||
| ssl_stapling on; | ||||
| ssl_stapling_verify on; | ||||
| @@ -1,243 +0,0 @@ | ||||
| include /etc/nginx/conf.d/sub/cache-fastcgi.conf; | ||||
|  | ||||
| # All upstream serveur | ||||
| upstream wordpress_server { | ||||
|         # ip_hash; | ||||
|         server wordpress:9000; | ||||
|         # server wordpress:9000 weight=1 max_fails=3 fail_timeout=30s; | ||||
| } | ||||
|  | ||||
| # Redirect all http requests to the main server wordpress_server | ||||
| server { | ||||
|         listen 80; | ||||
|         listen [::]:80; | ||||
|  | ||||
|         server_name wordpress.bensuperpc.org www.wordpress.bensuperpc.org bensuperpc.org www.bensuperpc.org; | ||||
|  | ||||
|         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 | ||||
| } | ||||
| @@ -1,40 +0,0 @@ | ||||
|  | ||||
| user  nginx; | ||||
| worker_processes  auto; | ||||
|  | ||||
| error_log  /var/log/nginx/error.log notice; | ||||
| pid        /var/run/nginx.pid; | ||||
|  | ||||
|  | ||||
| events { | ||||
|     worker_connections  1024; | ||||
| } | ||||
|  | ||||
|  | ||||
| http { | ||||
|     include       /etc/nginx/mime.types; | ||||
|     default_type  application/octet-stream; | ||||
|  | ||||
|     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' | ||||
|                       '$status $body_bytes_sent "$http_referer" ' | ||||
|                       '"$http_user_agent" "$http_x_forwarded_for"'; | ||||
|  | ||||
|     access_log  /var/log/nginx/access.log  main; | ||||
|  | ||||
|     sendfile        on; | ||||
|     #tcp_nopush     on; | ||||
|  | ||||
|     # Keepalive 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