diff --git a/Makefile b/Makefile index a35db00..dfeb160 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ DOCKER := docker -PROFILES := caddy wordpress adminer syncthing uptime-kuma jellyfin qbittorrent psitransfer gitea it-tools privatebin homepage +PROFILES := caddy wordpress adminer syncthing uptime-kuma jellyfin qbittorrent psitransfer gitea it-tools privatebin homepage yacht PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) # gitea-runner transmission dozzle watchtower diff --git a/README.md b/README.md index 25ed1c3..5540d45 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ If you have any **questions** or **suggestions**, feel free to open an issue or - [x] PsiTransfer (File sharing) - [x] it-tools (Tools for IT) - [x] Privatebin (Pastebin) +- [x] Yacht (Web interface for managing docker containers) ## Screenshots @@ -35,7 +36,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, 443, 2222 on your router](http://192.168.0.1/) +- [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...*** @@ -79,6 +80,8 @@ And then, caddy will generate the certificate for you and renew it automatically | [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 | +| [homepage.bensuperpc.org](https://homepage.bensuperpc.org) | Sub | Homepage | | bensuperpc.com | Main | Redirect to bensuperpc.org | | bensuperpc.fr | Main | Redirect to bensuperpc.org | | bensuperpc.net | Main | Redirect to bensuperpc.org | @@ -147,6 +150,12 @@ For [psitransfer.env](infrastructure/psitransfer/env/psitransfer.env) file, you PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn ``` +For [yacht.env](infrastructure/yacht/env/yacht.env) file, you need to change the secret key. + +```sh +SECRET_KEY=UZvg9nbcGIJlPEB3uI39TAEWyFOz9nm8 +``` + ### Start the infrastructure Start the website with: @@ -184,6 +193,8 @@ You can find all service on this table: | 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) | +| Homepage | Homepage | [homepage.bensuperpc.org](https://homepage.bensuperpc.org) | You can disable some services by removing the service name in PROFILES variable in the [Makefile](Makefile) file. @@ -214,6 +225,7 @@ To enable the gitea CI: https://medium.com/@lokanx/how-to-build-docker-container - [Privatebin](https://github.com/PrivateBin/PrivateBin) - [ghost](https://ghost.org) - [Homepage Tuto](https://belginux.com/installer-homepage-avec-docker/) +- [Yacht](https://yacht.sh/) - [Imagisphe](https://imagisphe.re/) ## License diff --git a/infrastructure/caddy/config/bensuperpc.org/Caddyfile b/infrastructure/caddy/config/bensuperpc.org/Caddyfile index 22a13a6..264f935 100644 --- a/infrastructure/caddy/config/bensuperpc.org/Caddyfile +++ b/infrastructure/caddy/config/bensuperpc.org/Caddyfile @@ -109,6 +109,10 @@ dozzle.bensuperpc.org { reverse_proxy dozzle:8080 } +yacht.bensuperpc.org { + reverse_proxy yacht:8000 +} + link.bensuperpc.org { # TODO: Use service with database # Friendly links diff --git a/infrastructure/homepage/config/docker.yaml b/infrastructure/homepage/config/docker.yaml index 03cfada..ceb90fb 100644 --- a/infrastructure/homepage/config/docker.yaml +++ b/infrastructure/homepage/config/docker.yaml @@ -2,9 +2,9 @@ # For configuration options and examples, please see: # https://gethomepage.dev/latest/configs/docker/ -# my-docker: -# host: 127.0.0.1 -# port: 2375 +#jellyfin: +# host: jellyfin +# port: 8096 #my-docker: # socket: /var/run/docker.sock diff --git a/infrastructure/homepage/config/services.yaml b/infrastructure/homepage/config/services.yaml index 1e28fdd..4bd325e 100644 --- a/infrastructure/homepage/config/services.yaml +++ b/infrastructure/homepage/config/services.yaml @@ -7,44 +7,104 @@ icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/wordpress.png href: https://www.bensuperpc.org/ description: Wordpress + ping: 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 - 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 - 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-tools + - 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 diff --git a/infrastructure/homepage/config/settings.yaml b/infrastructure/homepage/config/settings.yaml index 505b814..97cbceb 100644 --- a/infrastructure/homepage/config/settings.yaml +++ b/infrastructure/homepage/config/settings.yaml @@ -6,7 +6,7 @@ title: Bensuperpc base: https://homepage.bensuperpc.org -#favicon: /images/favicon.ico +favicon: /images/favicon.ico logpath: /app/logs @@ -19,7 +19,7 @@ background: theme: dark color: slate -language: fr +language: en layout: Personal: @@ -35,6 +35,14 @@ layout: style: row columns: 6 initiallyCollapsed: false + Others: + style: row + columns: 6 + initiallyCollapsed: false + Games: + style: row + columns: 6 + initiallyCollapsed: false quicklaunch: searchDescriptions: true diff --git a/infrastructure/homepage/image/favicon.ico b/infrastructure/homepage/image/favicon.ico new file mode 100644 index 0000000..d9fe0f0 Binary files /dev/null and b/infrastructure/homepage/image/favicon.ico differ diff --git a/infrastructure/yacht/docker-compose.yacht.yml b/infrastructure/yacht/docker-compose.yacht.yml new file mode 100644 index 0000000..2fa1a73 --- /dev/null +++ b/infrastructure/yacht/docker-compose.yacht.yml @@ -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 diff --git a/infrastructure/yacht/env/yacht.env b/infrastructure/yacht/env/yacht.env new file mode 100644 index 0000000..2731464 --- /dev/null +++ b/infrastructure/yacht/env/yacht.env @@ -0,0 +1,2 @@ +ADMIN_EMAIL=bensuperpc@gmail.com +SECRET_KEY=UZvg9nbcGIJlPEB3uI39TAEWyFOz9nm8