mirror of
				https://github.com/bensuperpc/infrastructure.git
				synced 2025-10-26 06:46:21 +01:00 
			
		
		
		
	Compare commits
	
		
			39 Commits
		
	
	
		
			dns
			...
			1f96c00bfc
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | 
							
								
								
									
										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 | ||||
							
								
								
									
										18
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							| @@ -26,7 +26,21 @@ jobs: | ||||
|         with: | ||||
|           submodules: "recursive" | ||||
|           fetch-depth: 0 | ||||
|       - name: "Update server" | ||||
|         run: make update | ||||
|       - 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 | ||||
							
								
								
									
										32
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								Makefile
									
									
									
									
									
								
							| @@ -13,57 +13,61 @@ | ||||
|  | ||||
| DOCKER := docker | ||||
|  | ||||
| PROFILES := caddy wordpress adminer uptime-kuma qbittorrent gitea jellyfin watchtower backup syncthing openssh | ||||
| PROFILES := caddy wordpress adminer ghost syncthing uptime-kuma jellyfin qbittorrent psitransfer gitea it-tools privatebin homepage watchtower | ||||
| PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) | ||||
|  | ||||
| COMPOSE_FILES :=  $(shell find docker-compose*.yml | sed -e 's/^/--file /') | ||||
| # gitea-runner transmission | ||||
|  | ||||
| COMPOSE_FILES :=  $(shell find . -name 'docker-compose*.yml' -type f | sed -e 's/^/--file /') | ||||
|  | ||||
| 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) $(PROFILE_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_FILES) $(PROFILE_CMD) pull | ||||
| 	docker compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) pull | ||||
|  | ||||
| .PHONY: update | ||||
| update: update-docker | ||||
| #	git submodule update --init --recursive --remote | ||||
| #	git pull --recurse-submodules --all --progress | ||||
| 	git submodule update --init --recursive --remote | ||||
| 	git pull --recurse-submodules --all --progress | ||||
|  | ||||
| .PHONY: clean | ||||
| clean: | ||||
| @@ -71,4 +75,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 | ||||
							
								
								
									
										58
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								README.md
									
									
									
									
									
								
							| @@ -19,7 +19,11 @@ If you have any **questions** or **suggestions**, feel free to open an issue or | ||||
| - [x] Jellyfin (Media server) | ||||
| - [x] Gitea (Git server) | ||||
| - [x] Uptime Kuma (Monitoring) | ||||
| - [x] Torrent server | ||||
| - [x] qbittorrent and transmission (Torrent client/server) | ||||
| - [x] SyncThing (File synchronization) | ||||
| - [x] PsiTransfer (File sharing) | ||||
| - [x] it-tools (Tools for IT) | ||||
| - [x] Privatebin (Pastebin) | ||||
|  | ||||
| ## Screenshots | ||||
|  | ||||
| @@ -31,7 +35,7 @@ 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 SFR box with default IP) | ||||
| - [Open port 80, 443, 2222 on your router](http://192.168.0.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...*** | ||||
|  | ||||
| @@ -66,12 +70,15 @@ And then, caddy will generate the certificate for you and renew it automatically | ||||
| | [bensuperpc.org](https://bensuperpc.org) | Main | Main domain | | ||||
| | [adminer.bensuperpc.org](https://adminer.bensuperpc.org) | Sub | Adminer for MariaDB for wordpress only | | ||||
| | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | Sub | Uptime Kuma for monitoring | | ||||
| | [torrent.bensuperpc.org](https://torrent.bensuperpc.org) | Sub | Torrent server | | ||||
| | [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 | | ||||
| | [ssh.bensuperpc.org](https://ssh.bensuperpc.org) | Sub | Openssh for ssh | | ||||
| | [psitransfer.bensuperpc.org](https://psitransfer.bensuperpc.org) | Sub | PsiTransfer for file sharing | | ||||
| | [it-tools.bensuperpc.org](https://it-tools.bensuperpc.org) | Sub | Tools for IT | | ||||
| | [privatebin.bensuperpc.org](https://privatebin.bensuperpc.org) | Sub | Pastebin | | ||||
| | bensuperpc.com | Main | Redirect to bensuperpc.org | | ||||
| | bensuperpc.fr | Main | Redirect to bensuperpc.org | | ||||
| | bensuperpc.net | Main | Redirect to bensuperpc.org | | ||||
| @@ -87,7 +94,7 @@ You can generate a password with 32 characters: | ||||
| openssl rand -base64 32 | ||||
| ``` | ||||
|  | ||||
| For the [wordpress.env](env/wordpress.env) file, you need to change the password and user for the database. | ||||
| For the [wordpress.env](infrastructure/wordpress/env/wordpress.env) file, you need to change the password and user for the database. | ||||
|  | ||||
| ```sh | ||||
| WORDPRESS_DB_USER=bensuperpc | ||||
| @@ -96,7 +103,7 @@ WORDPRESS_DB_NAME=wordpress | ||||
| WORDPRESS_DB_HOST=wordpress_db:3306 | ||||
| ``` | ||||
|  | ||||
| For [wordpress_db.env](env/wordpress_db.env) file, you need to change the password(s) and user for the database. | ||||
| For [wordpress_db.env](infrastructure/wordpress/env/wordpress_db.env) file, you need to change the password(s) and user for the database. | ||||
|      | ||||
| ```sh | ||||
| MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| @@ -105,7 +112,7 @@ MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| MARIADB_DATABASE=wordpress | ||||
| ``` | ||||
|  | ||||
| For [adminer.env](env/adminer.env) file, you need to change the password(s) and user for the database. | ||||
| For [adminer.env](infrastructure/wordpress/env/adminer.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| @@ -114,7 +121,7 @@ MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| ADMINER_DEFAULT_SERVER=wordpress_db | ||||
| ``` | ||||
|  | ||||
| For [gitea.env](env/gitea.env) file, you need to change the password(s) and user for the database. | ||||
| For [gitea.env](infrastructure/gitea/env/gitea.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| GITEA__database__DB_TYPE=mysql | ||||
| @@ -122,9 +129,10 @@ GITEA__database__HOST=database_gitea:3306 | ||||
| GITEA__database__NAME=gitea | ||||
| GITEA__database__USER=bensuperpc | ||||
| GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c | ||||
| ``` | ||||
|  | ||||
| For [gitea_db.env](env/gitea_db.env) file, you need to change the password(s) and user for the database. | ||||
| For [gitea_db.env](infrastructure/gitea/env/gitea_db.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| @@ -133,6 +141,12 @@ MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| MYSQL_DATABASE=gitea | ||||
| ``` | ||||
|  | ||||
| For [psitransfer.env](infrastructure/psitransfer/env/psitransfer.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | ||||
| ``` | ||||
|  | ||||
| ### Start the infrastructure | ||||
|  | ||||
| Start the website with: | ||||
| @@ -155,22 +169,27 @@ make down | ||||
|  | ||||
| ### All services | ||||
|  | ||||
| You can find all services on the [docker-compose.yml](docker-compose.yml) file or on this table: | ||||
| You can find all service on this table: | ||||
|  | ||||
| | Service | Description | URL | | ||||
| | --- | --- | --- | | ||||
| | Wordpress | Wordpress website | [bensuperpc.org](https://bensuperpc.org) and [www.bensuperpc.org](https://www.bensuperpc.org) | | ||||
| | Adminer | Adminer for MariaDB | [adminer.bensuperpc.org](https://adminer.bensuperpc.org) | | ||||
| | Uptime Kuma | Uptime Kuma for monitoring | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | | ||||
| | Torrent | Torrent server | [torrent.bensuperpc.org](https://torrent.bensuperpc.org) | | ||||
| | 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) | | ||||
| | Openssh | Openssh for ssh | [ssh.bensuperpc.org](https://ssh.bensuperpc.org) | | ||||
| | PsiTransfer | PsiTransfer for file sharing | [psitransfer.bensuperpc.org](https://psitransfer.bensuperpc.org) | | ||||
| | it-tools | Tools for IT | [it-tools.bensuperpc.org](https://it-tools.bensuperpc.org) | | ||||
| | Privatebin | Pastebin | [privatebin.bensuperpc.org](https://privatebin.bensuperpc.org) | | ||||
|  | ||||
| You can disable some services by removing the service name in PROFILES variable in the [Makefile](Makefile) file. | ||||
|  | ||||
| ## Build with | ||||
| 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/) | ||||
| @@ -183,6 +202,19 @@ You can disable some services by removing the service name in PROFILES variable | ||||
| - [Digital Ocean - How To Install WordPress with Docker Compose (nginx)](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose) | ||||
| - [Letsencrypt](https://letsencrypt.org/) | ||||
| - [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/) | ||||
| - [Imagisphe](https://imagisphe.re/) | ||||
|  | ||||
| ## License | ||||
|  | ||||
|   | ||||
| @@ -1,15 +0,0 @@ | ||||
| { | ||||
| 	email bensuperpc@gmail.com | ||||
| 	key_type p384 | ||||
|  | ||||
| 	log { | ||||
| 		output file /data/logs/access.log | ||||
| 		format console | ||||
| 	} | ||||
| } | ||||
|  | ||||
| import bensuperpc.org/Caddyfile | ||||
| import bensuperpc.com/Caddyfile | ||||
| import bensuperpc.net/Caddyfile | ||||
| import bensuperpc.ovh/Caddyfile | ||||
| import bensuperpc.fr/Caddyfile | ||||
| @@ -1,7 +0,0 @@ | ||||
| bensuperpc.net { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.net { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
| @@ -1,35 +0,0 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Backup | ||||
|   backup: | ||||
|     image: offen/docker-volume-backup:latest | ||||
|     container_name: backup | ||||
|     profiles: | ||||
|       - backup | ||||
|     restart: on-failure | ||||
|     env_file: | ||||
|       - env/backup.env | ||||
|     volumes: | ||||
|       - /var/run/docker.sock:/var/run/docker.sock:ro | ||||
|       - backup:/archive | ||||
|       - caddy_data:/backup/caddy_data:ro | ||||
|       - caddy_config:/backup/caddy_config:ro | ||||
| #      - gitea_data:/backup/gitea_data:ro | ||||
| #      - gitea_config:/backup/gitea_config:ro | ||||
| #      - wordpress_db:/backup/wordpress_db:ro | ||||
| #      - wordpress:/backup/wordpress:ro | ||||
| #      - jellyfin_config:/backup/jellyfin_config:ro | ||||
| #      - jellyfin_data:/backup/jellyfin_data:ro | ||||
| #      - jellyfin_cache:/backup/jellyfin_cache:ro | ||||
| #      - qbittorrent_config:/backup/qbittorrent_config:ro | ||||
| #      - qbittorrent_data:/backup/qbittorrent_data:ro | ||||
| #      - uptimekuma_data:/backup/uptimekuma_data:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   backup: | ||||
|     name: backup | ||||
| @@ -1,28 +0,0 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Jellyfin | ||||
|   jellyfin: | ||||
|     image: jellyfin/jellyfin:latest | ||||
|     container_name: jellyfin | ||||
|     profiles: | ||||
|       - jellyfin | ||||
|     restart: on-failure | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     volumes: | ||||
|       - jellyfin_config:/config | ||||
|       - jellyfin_data:/movies:ro | ||||
|       - jellyfin_cache:/cache | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   jellyfin_config: | ||||
|     name: jellyfin_config | ||||
|   jellyfin_data: | ||||
|     name: jellyfin_data | ||||
|   jellyfin_cache: | ||||
|     name: jellyfin_cache | ||||
| @@ -1,6 +0,0 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| networks: | ||||
|   infra-network: | ||||
|     driver: bridge | ||||
|     name: infra-network | ||||
| @@ -1,25 +0,0 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Openssh | ||||
|   openssh: | ||||
|     image: linuxserver/openssh-server:latest | ||||
|     container_name: openssh | ||||
|     profiles: | ||||
|       - openssh | ||||
|     restart: on-failure | ||||
|     env_file: | ||||
|       - env/openssh.env | ||||
|     volumes: | ||||
|       - openssh_config:/config | ||||
|       - openssh_data:/data | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   openssh_config: | ||||
|     name: openssh_config | ||||
|   openssh_data: | ||||
|     name: openssh_data | ||||
| @@ -1,5 +0,0 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| volumes: | ||||
|   uptimekuma_data: | ||||
|     name: uptimekuma_data | ||||
							
								
								
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | ||||
| BACKUP_COMPRESSION="zst" | ||||
| BACKUP_CRON_EXPRESSION="0 2 * * *" | ||||
| # BACKUP_RETENTION_DAYS: '7' | ||||
| # BACKUP_FILENAME="backup-%Y-%m-%dT%H-%M-%S.{{ .Extension }}" | ||||
							
								
								
									
										7
									
								
								env/gitea.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								env/gitea.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +0,0 @@ | ||||
| USER_UID=1000 | ||||
| USER_GID=1000 | ||||
| GITEA__database__DB_TYPE=mysql | ||||
| GITEA__database__HOST=database_gitea:3306 | ||||
| GITEA__database__NAME=gitea | ||||
| GITEA__database__USER=bensuperpc | ||||
| GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
							
								
								
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,11 +0,0 @@ | ||||
| PUID=1000 | ||||
| PGID=1000 | ||||
| PUBLIC_KEY= | ||||
| # PUBLIC_KEY_FILE= | ||||
| # PUBLIC_KEY_DIR= | ||||
| # PUBLIC_KEY_URL= | ||||
| SUDO_ACCESS=false | ||||
| PASSWORD_ACCESS=false | ||||
| # USER_PASSWORD= | ||||
| # USER_PASSWORD_FILE= | ||||
| # USER_NAME= | ||||
							
								
								
									
										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/* | ||||
							
								
								
									
										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 | ||||
| } | ||||
| @@ -51,6 +51,18 @@ 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 | ||||
| } | ||||
| @@ -59,8 +71,12 @@ jellyfin.bensuperpc.org { | ||||
| 	reverse_proxy jellyfin:8096 | ||||
| } | ||||
| 
 | ||||
| ssh.bensuperpc.org { | ||||
| 	reverse_proxy openssh:2222 | ||||
| transfer.bensuperpc.org { | ||||
| 	reverse_proxy psitransfer:3000 | ||||
| } | ||||
| 
 | ||||
| psitransfer.bensuperpc.org { | ||||
| 	redir https://transfer.bensuperpc.org{uri} permanent | ||||
| } | ||||
| 
 | ||||
| syncthing.bensuperpc.org { | ||||
| @@ -69,6 +85,30 @@ syncthing.bensuperpc.org { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| it-tools.bensuperpc.org { | ||||
| 	reverse_proxy it-tools:80 | ||||
| } | ||||
| 
 | ||||
| tools.bensuperpc.org { | ||||
| 	redir https://it-tools.bensuperpc.org permanent | ||||
| } | ||||
| 
 | ||||
| privatebin.bensuperpc.org { | ||||
| 	reverse_proxy privatebin:8080 | ||||
| } | ||||
| 
 | ||||
| pastebin.bensuperpc.org { | ||||
| 	redir https://privatebin.bensuperpc.org permanent | ||||
| } | ||||
| 
 | ||||
| homepage.bensuperpc.org { | ||||
| 	reverse_proxy homepage:3000 | ||||
| } | ||||
| 
 | ||||
| ghost.bensuperpc.org { | ||||
| 	reverse_proxy ghost:2368 | ||||
| } | ||||
| 
 | ||||
| link.bensuperpc.org { | ||||
| 	# TODO: Use service with database | ||||
| 	# Friendly links | ||||
| @@ -89,9 +129,11 @@ link.bensuperpc.org { | ||||
| 	redir /scpfb https://youtu.be/9zrKk-1E8zM?si=8R_ZBVG3GzMUYOe8&t=36 permanent | ||||
| 	redir /mother https://youtu.be/w3NyycHR3fE?si=rNNSW9zYv0bcO2Eu permanent | ||||
| 	redir /cpu https://www.youtube.com/watch?v=y39D4529FM4 permanent | ||||
| 	redir /chanteur https://youtu.be/HXdP15Ubu6M?si=N0qvhqo--3pmSGmb permanent | ||||
| 	redir /lechanteur https://youtu.be/HXdP15Ubu6M?si=N0qvhqo--3pmSGmb permanent | ||||
| 	redir /bna https://youtu.be/3T3ofoKfEoY?si=_7HkGQXMC7rBng8O permanent | ||||
| 	redir /jojo https://youtu.be/U0TXIXTzJEY?si=2acWJWX06ju2w4uj permanent | ||||
| 	redir /patapon https://youtu.be/H6CbNHLHkmk?si=ZvU8SzrOK-oCUXT5 permanent | ||||
| 	redir /darkwater https://youtu.be/Tr8ZgF4Dc0E?si=CEOmm2J6Jp5rdbbt permanent | ||||
| 	redir /train https://youtu.be/l8mScKWj3kQ?si=BV07uJ9eP3kzV9Kl permanent | ||||
| 	redir /jdg https://www.youtube.com/@joueurdugrenier permanent | ||||
| } | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Caddy | ||||
|   caddy: | ||||
| @@ -7,7 +5,7 @@ services: | ||||
|     container_name: caddy | ||||
|     profiles: | ||||
|       - caddy | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     ports: | ||||
|       - 80:80 | ||||
|       - 443:443 | ||||
| @@ -15,24 +13,17 @@ services: | ||||
|       - wordpress:/var/www/html:rw | ||||
|       - caddy_data:/data:rw | ||||
|       - caddy_config:/config:rw | ||||
|       - ./caddy:/etc/caddy:ro | ||||
|       - ./caddy/config:/etc/caddy:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     env_file: | ||||
|       - env/caddy.env | ||||
|     cap_add: | ||||
|       - NET_ADMIN | ||||
|       - ./caddy/env/caddy.env | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     #    cap_drop: | ||||
|     #      - ALL | ||||
|     #    cap_add: | ||||
|     #      - CHOWN | ||||
|     #      - FOWNER | ||||
|     #      - DAC_OVERRIDE | ||||
|     #      - SETGID | ||||
|     #      - SETUID | ||||
|     #      - NET_BIND_SERVICE | ||||
|     #cap_drop: | ||||
|     #  - ALL | ||||
|     cap_add: | ||||
|       - NET_ADMIN | ||||
|     healthcheck: | ||||
|       test: pidof caddy || exit 1 | ||||
|       interval: 120s | ||||
| @@ -44,3 +35,8 @@ volumes: | ||||
|     name: caddy_data | ||||
|   caddy_config: | ||||
|     name: caddy_config | ||||
| 
 | ||||
| networks: | ||||
|   infra-network: | ||||
|     driver: bridge | ||||
|     name: infra-network | ||||
							
								
								
									
										45
									
								
								infrastructure/ghost/docker-compose.ghost.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								infrastructure/ghost/docker-compose.ghost.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| services: | ||||
|   # ghost | ||||
|   ghost: | ||||
|     image: ghost:latest | ||||
|     container_name: ghost | ||||
|     profiles: | ||||
|       - ghost | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - ghost_db | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./ghost/env/ghost.env | ||||
|     volumes: | ||||
|       - ghost_data:/var/lib/ghost/content:rw | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
|   # Database ghost | ||||
|   ghost_db: | ||||
|     image: mariadb:latest | ||||
|     container_name: ghost_db | ||||
|     profiles: | ||||
|       - database | ||||
|       - ghost | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     volumes: | ||||
|       - ghost_db:/var/lib/mysql:rw | ||||
|     env_file: | ||||
|       - ./ghost/env/ghost_db.env | ||||
|     command: '--default-authentication-plugin=mysql_native_password' | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   ghost_db: | ||||
|     name: ghost_db | ||||
|   ghost_data: | ||||
|     name: ghost_data | ||||
							
								
								
									
										6
									
								
								infrastructure/ghost/env/ghost.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								infrastructure/ghost/env/ghost.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| database__client=mysql | ||||
| database__connection__host=ghost_db | ||||
| database__connection__user=bensuperpc | ||||
| database__connection__password=37hc06tWrS9DbFN2RZG8qdMD | ||||
| database__connection__database=ghost | ||||
| url=https://ghost.bensuperpc.org | ||||
							
								
								
									
										4
									
								
								infrastructure/ghost/env/ghost_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/ghost/env/ghost_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| MARIADB_ROOT_PASSWORD=a03F1GYjpiHNAgAdB0ApYcb0Bp8ZAYh2 | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=37hc06tWrS9DbFN2RZG8qdMD | ||||
| MARIADB_DATABASE=ghost | ||||
							
								
								
									
										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: | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Gitea | ||||
|   gitea: | ||||
| @@ -7,11 +5,14 @@ services: | ||||
|     container_name: gitea | ||||
|     profiles: | ||||
|       - gitea | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - database_gitea | ||||
|       - caddy | ||||
|     ports: | ||||
|       - "22:22" | ||||
|     env_file: | ||||
|       - env/gitea.env | ||||
|       - ./gitea/env/gitea.env | ||||
|     volumes: | ||||
|       - gitea_data:/var/lib/gitea | ||||
|       - gitea_config:/etc/gitea | ||||
| @@ -29,19 +30,37 @@ services: | ||||
|     profiles: | ||||
|       - database | ||||
|       - gitea | ||||
|     depends_on: | ||||
|       - gitea | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     volumes: | ||||
|       - gitea_db:/var/lib/mysql:rw | ||||
|     env_file: | ||||
|       - env/gitea_db.env | ||||
|       - ./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 | ||||
| @@ -49,3 +68,5 @@ volumes: | ||||
|     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 | ||||
							
								
								
									
										18
									
								
								infrastructure/homepage/config/bookmarks.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								infrastructure/homepage/config/bookmarks.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/latest/configs/bookmarks | ||||
|  | ||||
| - Developer: | ||||
|     - Github: | ||||
|         - abbr: GH | ||||
|           href: https://github.com/bensuperpc | ||||
|  | ||||
| - Social: | ||||
|     - Reddit: | ||||
|         - abbr: RE | ||||
|           href: https://reddit.com/u/bensuperpc | ||||
|  | ||||
| - Entertainment: | ||||
|     - YouTube: | ||||
|         - abbr: YT | ||||
|           href: https://youtube.com/c/bensuperpc | ||||
							
								
								
									
										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/ | ||||
|  | ||||
| # my-docker: | ||||
| #   host: 127.0.0.1 | ||||
| #   port: 2375 | ||||
|  | ||||
| #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 | ||||
							
								
								
									
										50
									
								
								infrastructure/homepage/config/services.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								infrastructure/homepage/config/services.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/latest/configs/services | ||||
|  | ||||
| - Personal: | ||||
|     - wordpress: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/wordpress.png | ||||
|         href: https://www.bensuperpc.org/ | ||||
|         description: Wordpress | ||||
|     - ghost: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/ghost.png | ||||
|         href: https://ghost.bensuperpc.org/ | ||||
|         description: Ghost | ||||
|     - uptime-kuma: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/uptime-kuma.png | ||||
|         href: https://uptimekuma.bensuperpc.org/ | ||||
|         description: Uptime Kuma | ||||
|  | ||||
| - Sharing: | ||||
|     - jellyfin: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyfin.png | ||||
|         href: https://jellyfin.bensuperpc.org/ | ||||
|         description: Jellyfin | ||||
|     - psitransfer: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/psitransfer.png | ||||
|         href: https://psitransfer.bensuperpc.org/ | ||||
|         description: PsiTransfer | ||||
|     - qbittorrent: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/qbittorrent.png | ||||
|         href: https://qbittorrent.bensuperpc.org/ | ||||
|         description: qBittorrent | ||||
|     - syncthing: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/syncthing.png | ||||
|         href: https://syncthing.bensuperpc.org/ | ||||
|         description: Syncthing | ||||
|     - transmission: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/transmission.png | ||||
|         href: https://transmission.bensuperpc.org/ | ||||
|         description: Transmission | ||||
|  | ||||
| - Utils: | ||||
|     - it-tools: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/it-tools.png | ||||
|         href: https://it-tools.bensuperpc.org/ | ||||
|         description: IT Tools | ||||
|     - gitea: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/gitea.png | ||||
|         href: https://gitea.bensuperpc.org/ | ||||
|         description: Gitea | ||||
|      | ||||
							
								
								
									
										52
									
								
								infrastructure/homepage/config/settings.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								infrastructure/homepage/config/settings.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/latest/configs/settings | ||||
|  | ||||
| title: Bensuperpc | ||||
|  | ||||
| base: https://homepage.bensuperpc.org | ||||
|  | ||||
| #favicon: /images/favicon.ico | ||||
|  | ||||
| logpath: /app/logs | ||||
|  | ||||
| background:  | ||||
|   image: /images/deep.jpg | ||||
|   blur: md | ||||
|   opacity: 50 | ||||
|   brightness: 50 | ||||
|  | ||||
| theme: dark | ||||
| color: slate | ||||
|  | ||||
| language: fr | ||||
|  | ||||
| layout: | ||||
|   Personal: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Media: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Sharing: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Utils: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|     initiallyCollapsed: false | ||||
|  | ||||
| quicklaunch: | ||||
|   searchDescriptions: true | ||||
|   hideInternetSearch: false | ||||
|   hideVisitURL: false | ||||
|  | ||||
| hideVersion: true | ||||
|  | ||||
| headerStyle: boxed | ||||
|  | ||||
| useEqualHeights: true | ||||
|  | ||||
| #providers: | ||||
| #  openweathermap: openweathermapapikey | ||||
| #  weatherapi: weatherapiapikey | ||||
							
								
								
									
										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/deep.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								infrastructure/homepage/image/deep.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 248 KiB | 
							
								
								
									
										23
									
								
								infrastructure/it-tools/docker-compose.it-tools.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								infrastructure/it-tools/docker-compose.it-tools.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| services: | ||||
|   # it-tools | ||||
|   it-tools: | ||||
|     image: corentinth/it-tools:latest | ||||
|     container_name: it-tools | ||||
|     profiles: | ||||
|       - it-tools | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     read_only: false | ||||
|     deploy: | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.5' | ||||
|           memory: 512M | ||||
|         reservations: | ||||
|           cpus: '0.001' | ||||
|           memory: 20M | ||||
							
								
								
									
										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
									
								
							
							
								
								
									
										29
									
								
								infrastructure/privatebin/docker-compose.privatebin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								infrastructure/privatebin/docker-compose.privatebin.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| services: | ||||
|   # privatebin | ||||
|   privatebin: | ||||
|     image: privatebin/nginx-fpm-alpine:latest | ||||
|     container_name: privatebin | ||||
|     profiles: | ||||
|       - privatebin | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     volumes: | ||||
|       - privatebin_data:/srv/data | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     read_only: true | ||||
|     deploy: | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.5' | ||||
|           memory: 512M | ||||
|         reservations: | ||||
|           cpus: '0.001' | ||||
|           memory: 20M | ||||
|  | ||||
| volumes: | ||||
|   privatebin_data: | ||||
|     name: privatebin_data | ||||
							
								
								
									
										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 | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # qBittorrent | ||||
|   qbittorrent: | ||||
| @@ -7,11 +5,11 @@ services: | ||||
|     container_name: qbittorrent | ||||
|     profiles: | ||||
|       - qbittorrent | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - env/qbittorrent.env | ||||
|       - ./qbittorrent/env/qbittorrent.env | ||||
|     volumes: | ||||
|       - qbittorrent_config:/config | ||||
|       - qbittorrent_data:/downloads | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # syncthing | ||||
|   syncthing: | ||||
| @@ -7,9 +5,11 @@ services: | ||||
|     container_name: syncthing | ||||
|     profiles: | ||||
|       - syncthing | ||||
|     restart: on-failure | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     env_file: | ||||
|       - env/syncthing.env | ||||
|       - ./syncthing/env/syncthing.env | ||||
|     volumes: | ||||
|       - syncthing_config:/config | ||||
|       - syncthing_data:/data1 | ||||
							
								
								
									
										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 | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Uptime Kuma | ||||
|   uptime-kuma: | ||||
| @@ -9,8 +7,14 @@ services: | ||||
|       - uptime-kuma | ||||
|     volumes: | ||||
|       - uptimekuma_data:/app/data | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| 
 | ||||
| volumes: | ||||
|   uptimekuma_data: | ||||
|     name: uptimekuma_data | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Watchtower | ||||
|   watchtower: | ||||
| @@ -7,7 +5,9 @@ services: | ||||
|     container_name: watchtower | ||||
|     profiles: | ||||
|       - watchtower | ||||
|     restart: on-failure | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     networks: | ||||
|       - infra-network | ||||
|     volumes: | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Adminer | ||||
|   adminer: | ||||
| @@ -7,9 +5,9 @@ services: | ||||
|     container_name: adminer | ||||
|     profiles: | ||||
|       - adminer | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     env_file:  | ||||
|       - env/adminer.env | ||||
|       - ./wordpress/env/adminer.env | ||||
|     depends_on: | ||||
|       - wordpress_db | ||||
|       - caddy | ||||
| @@ -1,5 +1,3 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Wordpress | ||||
|   wordpress: | ||||
| @@ -7,14 +5,14 @@ services: | ||||
|     container_name: wordpress | ||||
|     profiles: | ||||
|       - wordpress | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - wordpress_db | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - env/wordpress.env | ||||
|       - ./wordpress/env/wordpress.env | ||||
|     volumes: | ||||
|       - ./config/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro | ||||
|       - ./wordpress/config/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro | ||||
|       - wordpress:/var/www/html:rw | ||||
|     networks: | ||||
|       - infra-network | ||||
| @@ -30,19 +28,40 @@ services: | ||||
|       - wordpress | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure | ||||
|     restart: on-failure:5 | ||||
|     volumes: | ||||
|       - wordpress_db:/var/lib/mysql:rw | ||||
|     env_file: | ||||
|       - env/wordpress_db.env | ||||
|       - ./wordpress/env/wordpress_db.env | ||||
|     command: '--default-authentication-plugin=mysql_native_password' | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| 
 | ||||
|   wordpress_backup: | ||||
|     image: mazzolino/restic:latest | ||||
|     container_name: wordpress_backup | ||||
|     profiles: | ||||
|       - wordpress | ||||
|     depends_on: | ||||
|       - wordpress | ||||
|     restart: on-failure:5 | ||||
|     env_file: | ||||
|       - ./wordpress/env/backup.env | ||||
|     volumes: | ||||
|       - wordpress_backup:/mnt/restic | ||||
|       - wordpress_db:/data/wordpress_db:ro | ||||
|       - wordpress:/data/wordpress:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| 
 | ||||
| volumes: | ||||
|   wordpress_db: | ||||
|     name: wordpress_db | ||||
|   wordpress: | ||||
|     name: wordpress | ||||
|   wordpress_backup: | ||||
|     name: wordpress_backup | ||||
							
								
								
									
										9
									
								
								infrastructure/wordpress/env/backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								infrastructure/wordpress/env/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% | ||||
		Reference in New Issue
	
	Block a user