Merge branch 'master' into app/immich
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
node_modules/
|
||||
package-lock.json
|
||||
|
|
24
README.md
|
@ -1,17 +1,21 @@
|
|||
# Tipi App Store ⛺️
|
||||
|
||||
This is the official repository for the Tipi App Store. It contains all the apps that are available for download on [Tipi](https://github.com/meienberger/runtipi).
|
||||
|
||||
## Apps available
|
||||
|
||||
- [Adguard Home](https://github.com/AdguardTeam/AdGuardHome) - Adguard Home DNS adblocker
|
||||
- [Booksonic](https://github.com/popeen) - A server for streaming your audiobooks
|
||||
- [Bookstack](https://github.com/BookStackApp/BookStack) - Simple, easy-to-use platform for organising and storing information.
|
||||
- [Calibre-Web](https://github.com/janeczku/calibre-web) - Web Ebook Reader
|
||||
- [Code-Server](https://github.com/coder/code-server) - Web VS Code
|
||||
- [Cryptpad](https://github.com/xwiki-labs/cryptpad) - Collaboration suite, end-to-end encrypted and open-source
|
||||
- [Filebrowser](https://github.com/filebrowser/filebrowser) - Web File Browser
|
||||
- [Firefly III](https://github.com/firefly-iii/firefly-iii) - A personal finances manager
|
||||
- [Freshrss](https://github.com/FreshRSS/FreshRSS) - A free, self-hostable RSS aggregator
|
||||
- [Gitea](https://github.com/go-gitea/gitea) - Gitea - A painless self-hosted Git service
|
||||
- [Ghost](https://github.com/TryGhost/Ghost) - Ghost - Turn your audience into a business
|
||||
- [Gitea](https://github.com/go-gitea/gitea) - Gitea - A painless self-hosted Git service
|
||||
- [Headscale](https://github.com/juanfont/headscale) - An open source, self-hosted implementation of the Tailscale control server
|
||||
- [Homarr](https://github.com/ajnart/homarr) - A homepage for your server
|
||||
- [Home Assistant](https://github.com/home-assistant/core) - Open source home automation that puts local control and privacy first
|
||||
- [Invidious](https://github.com/iv-org/invidious) - An alternative front-end to YouTube
|
||||
|
@ -19,7 +23,10 @@ This is the official repository for the Tipi App Store. It contains all the apps
|
|||
- [Jellyfin](https://github.com/jellyfin/jellyfin) - A media server for your home collection
|
||||
- [Joplin](https://github.com/laurent22/joplin) - Privacy focused note-taking app
|
||||
- [Libreddit](https://github.com/spikecodes/libreddit) - Private front-end for Reddit
|
||||
- [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) - Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup
|
||||
- [Mealie](https://github.com/hay-kot/mealie) - Self-hosted recipe manager and meal planner.
|
||||
- [Monero Daemon](https://github.com/monero-project/monero/) - A network daemon for Monero: the secure, private, untraceable cryptocurrency
|
||||
- [Monero p2pool Daemon](https://github.com/SChernykh/p2pool) - Decentralized pool for Monero mining
|
||||
- [n8n](https://github.com/n8n-io/n8n) - Workflow Automation Tool
|
||||
- [Nextcloud](https://github.com/nextcloud/server) - A safe home for all your data
|
||||
- [Nitter](https://github.com/zedeus/nitter) - Alternative Twitter front-end
|
||||
|
@ -29,20 +36,29 @@ This is the official repository for the Tipi App Store. It contains all the apps
|
|||
- [Pihole](https://github.com/pi-hole/pi-hole) - A black hole for Internet advertisements
|
||||
- [Plex](https://github.com/plexinc/pms-docker) - Stream Movies & TV Shows
|
||||
- [Portainer](https://github.com/portainer/portainer) - Making Docker and Kubernetes management easy.
|
||||
- [PrivateBin](https://github.com/PrivateBin/PrivateBin) - A minimalist, open source online pastebin where the server has zero knowledge of pasted data
|
||||
- [Prowlarr](https://github.com/Prowlarr/Prowlarr/) - A torrent/usenet indexer manager/proxy
|
||||
- [Proxitok](https://github.com/pablouser1/ProxiTok) - Open source alternative frontend for TikTok made using PHP
|
||||
- [Radarr](https://github.com/Radarr/Radarr) - Movie collection manager for Usenet and BitTorrent users
|
||||
- [Readarr](https://github.com/Readarr/Readarr) - Book Manager and Automation (Sonarr for Ebooks)
|
||||
- [Resilio Sync](https://github.com/bt-sync) - Fast, reliable, and simple file sync and share solution
|
||||
- [SearXNG](https://github.com/searxng/searxng) - SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled
|
||||
- [Send](https://gitlab.com/timvisee/send) - Simple, private file sharing
|
||||
- [Sonarr](https://github.com/Sonarr/Sonarr) - TV show manager for Usenet and BitTorrent
|
||||
- [Syncthing](https://github.com/syncthing/syncthing) - Continuous File Synchronization
|
||||
- [Tailscale](https://github.com/tailscale/tailscale) - The easiest, most secure way to use WireGuard and 2FA
|
||||
- [Tautulli](https://github.com/Tautulli/Tautulli) - A Python based monitoring and tracking tool for Plex Media Server
|
||||
- [Teddit](https://codeberg.org/teddit/teddit) - Alternative Reddit front-end focused on privacy https://teddit.net
|
||||
- [Transmission](https://github.com/transmission/transmission) - Fast, easy, and free BitTorrent client
|
||||
- [Wireguard Easy](https://github.com/WeeJeWel/wg-easy) - WireGuard VPN + Web-based Admin UI
|
||||
- [Tube Archivist](https://github.com/tubearchivist/tubearchivist) - Your self-hosted YouTube media server
|
||||
- [Uptime Kuma](https://github.com/louislam/uptime-kuma) - A fancy self-hosted monitoring tool
|
||||
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Unofficial Bitwarden compatible server
|
||||
- [Wireguard Easy](https://github.com/WeeJeWel/wg-easy) - WireGuard VPN + Web-based Admin UI
|
||||
- [ZeroTier](https://github.com/zerotier/ZeroTierOne) - Easy to use zero configuration VPN.
|
||||
|
||||
## How to sumbit an app
|
||||
If you want to see new apps on Tipi you can either :
|
||||
- [Open an issue]() on this repository and some members of the community will add it
|
||||
|
||||
If you want to see new apps on Tipi you can either:
|
||||
|
||||
- [Open an issue](https://github.com/meienberger/runtipi-appstore/issues) on this repository and members of the community will add it
|
||||
- Fork this repo and create the necessary files for a Tipi app. Follow this [guide](https://github.com/meienberger/runtipi/wiki/Adding-your-own-app)
|
||||
|
|
|
@ -18,7 +18,13 @@ interface AppConfig {
|
|||
available: boolean;
|
||||
}
|
||||
|
||||
const networkExceptions = ["pihole", "tailscale", "homeassistant", "plex"];
|
||||
const networkExceptions = [
|
||||
"pihole",
|
||||
"tailscale",
|
||||
"homeassistant",
|
||||
"plex",
|
||||
"zerotier",
|
||||
];
|
||||
const getAppConfigs = (): AppConfig[] => {
|
||||
const apps: AppConfig[] = [];
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
"$schema": "../schema.json",
|
||||
"name": "Adguard",
|
||||
"available": true,
|
||||
"tipi_version": 1,
|
||||
"version": "0.107.7",
|
||||
"tipi_version": 2,
|
||||
"version": "0.107.13",
|
||||
"port": 8104,
|
||||
"id": "adguard",
|
||||
"categories": ["network", "security"],
|
||||
|
@ -14,5 +14,12 @@
|
|||
"requirements": {
|
||||
"ports": [53]
|
||||
},
|
||||
"form_fields": []
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "ip",
|
||||
"label": "Network Interface (default: 0.0.0.0)",
|
||||
"required": false,
|
||||
"env_variable": "NETWORK_INTERFACE"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
adguard:
|
||||
image: adguard/adguardhome:v0.107.7
|
||||
image: adguard/adguardhome:v0.107.13
|
||||
container_name: adguard
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}/data/work:/opt/adguardhome/work"
|
||||
|
@ -11,6 +11,6 @@ services:
|
|||
networks:
|
||||
- tipi_main_network
|
||||
ports:
|
||||
- 53:53/tcp
|
||||
- 53:53/udp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/tcp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/udp
|
||||
- ${APP_PORT}:80
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
"$schema": "../schema.json",
|
||||
"name": "Jellyfin",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8091,
|
||||
"id": "jellyfin",
|
||||
"tipi_version": 1,
|
||||
"version": "10.8.1",
|
||||
"tipi_version": 2,
|
||||
"version": "10.8.4",
|
||||
"categories": ["media"],
|
||||
"description": "Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest!",
|
||||
"short_desc": "A media server for your home collection",
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
jellyfin:
|
||||
image: lscr.io/linuxserver/jellyfin:10.8.1
|
||||
image: lscr.io/linuxserver/jellyfin:10.8.4
|
||||
container_name: jellyfin
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
|
@ -11,8 +10,32 @@ services:
|
|||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- JELLYFIN_PublishedServerUrl=${APP_PROTOCOL:-http}://${APP_DOMAIN}/
|
||||
restart: "unless-stopped"
|
||||
ports:
|
||||
- ${APP_PORT}:8096
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.middlewares.jellyfin-mw.headers.SSLForceHost: true
|
||||
traefik.http.middlewares.jellyfin-mw.headers.SSLHost: ${APP_DOMAIN}
|
||||
traefik.http.middlewares.jellyfin-mw.headers.SSLRedirect: true
|
||||
traefik.http.middlewares.jellyfin-mw.headers.STSIncludeSubdomains: true
|
||||
traefik.http.middlewares.jellyfin-mw.headers.STSPreload: true
|
||||
traefik.http.middlewares.jellyfin-mw.headers.STSSeconds: 315360000
|
||||
traefik.http.middlewares.jellyfin-mw.headers.browserXSSFilter: true
|
||||
traefik.http.middlewares.jellyfin-mw.headers.contentTypeNosniff: true
|
||||
traefik.http.middlewares.jellyfin-mw.headers.customFrameOptionsValue: 'allow-from https://${DOMAIN}'
|
||||
traefik.http.middlewares.jellyfin-mw.headers.customResponseHeaders.X-Robots-Tag: noindex,nofollow,nosnippet,noarchive,notranslate,noimageindex
|
||||
traefik.http.middlewares.jellyfin-mw.headers.forceSTSHeader: true
|
||||
traefik.http.middlewares.jellyfin-mw.headers.frameDeny: true
|
||||
traefik.http.routers.jellyfin.entryPoints: websecure
|
||||
traefik.http.routers.jellyfin.middlewares: jellyfin-mw
|
||||
traefik.http.routers.jellyfin.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.jellyfin.service: jellyfin-svc
|
||||
traefik.http.routers.jellyfin.tls: true
|
||||
traefik.http.routers.jellyfin.tls.certresolver: myresolver
|
||||
traefik.http.routers.jellyfin.tls.domains: ${APP_DOMAIN}
|
||||
traefik.http.services.jellyfin-svc.loadBalancer.passHostHeader: true
|
||||
traefik.http.services.jellyfin-svc.loadBalancer.server.port: 8096
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
"$schema": "../schema.json",
|
||||
"name": "Joplin Server",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8099,
|
||||
"id": "joplin",
|
||||
"tipi_version": 1,
|
||||
"tipi_version": 2,
|
||||
"version": "2.7.4",
|
||||
"categories": ["utilities"],
|
||||
"description": "Default credentials: admin@localhost / admin",
|
||||
|
@ -12,5 +13,13 @@
|
|||
"author": "https://github.com/laurent22",
|
||||
"source": "https://github.com/laurent22/joplin",
|
||||
"website": "https://joplinapp.org",
|
||||
"form_fields": []
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Joplin DB password",
|
||||
"max": 50,
|
||||
"min": 8,
|
||||
"env_variable": "JOPLIN_DB_PASSWORD"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ services:
|
|||
- ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=tipi
|
||||
- POSTGRES_PASSWORD=${JOPLIN_DB_PASSWORD}
|
||||
- POSTGRES_USER=tipi
|
||||
- POSTGRES_DB=joplin
|
||||
networks:
|
||||
|
@ -26,9 +26,9 @@ services:
|
|||
- ${DNS_IP}
|
||||
environment:
|
||||
- APP_PORT=22300
|
||||
- APP_BASE_URL=http://${INTERNAL_IP}:${APP_PORT}
|
||||
- APP_BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}/
|
||||
- DB_CLIENT=pg
|
||||
- POSTGRES_PASSWORD=tipi
|
||||
- POSTGRES_PASSWORD=${JOPLIN_DB_PASSWORD}
|
||||
- POSTGRES_USER=tipi
|
||||
- POSTGRES_DATABASE=joplin
|
||||
- POSTGRES_PORT=5432
|
||||
|
@ -36,3 +36,13 @@ services:
|
|||
- MAX_TIME_DRIFT=0
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.joplin.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.joplin.entrypoints: websecure
|
||||
traefik.http.routers.joplin.service: joplin
|
||||
traefik.http.routers.joplin.tls.certresolver: myresolver
|
||||
traefik.http.services.joplin.loadbalancer.server.port: 22300
|
||||
traefik.http.services.joplin.loadbalancer.passhostheader: true
|
||||
traefik.http.middlewares.joplin-sslheader.headers.customrequestheaders.X-Forwarded-Proto: http
|
||||
traefik.http.routers.joplin-sslheader.middlewares: joplin-sslheader@docker
|
||||
|
|
16
apps/libretranslate/config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "LibreTranslate",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8121,
|
||||
"id": "libretranslate",
|
||||
"tipi_version": 1,
|
||||
"version": "v1.2.9",
|
||||
"categories": ["utilities"],
|
||||
"description": "Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source Argos Translate library.",
|
||||
"short_desc": "Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup.",
|
||||
"author": "LibreTranslate",
|
||||
"source": "https://github.com/LibreTranslate/LibreTranslate",
|
||||
"form_fields": []
|
||||
}
|
20
apps/libretranslate/docker-compose.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
libretranslate:
|
||||
container_name: libretranslate
|
||||
image: libretranslate/libretranslate:v1.2.9
|
||||
dns:
|
||||
- ${DNS_IP}
|
||||
ports:
|
||||
- ${APP_PORT}:5000
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.libretranslate.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.libretranslate.entrypoints: websecure
|
||||
traefik.http.routers.libretranslate.service: libretranslate
|
||||
traefik.http.routers.libretranslate.tls.certresolver: myresolver
|
||||
traefik.http.services.libretranslate.loadbalancer.server.port: 5000
|
||||
|
7
apps/libretranslate/metadata/description.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# LibreTranslate
|
||||
|
||||
[Try it online!](https://libretranslate.com) | [API Docs](https://libretranslate.com/docs) | [Community Forum](https://community.libretranslate.com/)
|
||||
|
||||
Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source [Argos Translate](https://github.com/argosopentech/argos-translate) library.
|
||||
|
||||
![image](https://user-images.githubusercontent.com/64697405/139015751-279f31ac-36f1-4950-9ea7-87e76bf65f51.png)
|
BIN
apps/libretranslate/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 20 KiB |
25
apps/moneroblock/config.json
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Moneroblock",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 31312,
|
||||
"id": "moneroblock",
|
||||
"tipi_version": 1,
|
||||
"version": "v0.1.1",
|
||||
"categories": ["utilities"],
|
||||
"description": "MoneroBlock is a trustless block explorer for the Monero payment network.",
|
||||
"short_desc": "Decentralized and trustless Monero block explorer",
|
||||
"author": "duggavo",
|
||||
"source": "https://github.com/duggavo/MoneroBlock",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Monero Daemon Address in format node.host.name:port, i.e. node.sethforprivacy.com:18089",
|
||||
"max": 100,
|
||||
"min": 10,
|
||||
"required": false,
|
||||
"env_variable": "DAEMON_ADDRESS"
|
||||
}
|
||||
]
|
||||
}
|
20
apps/moneroblock/docker-compose.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
moneroblock:
|
||||
image: sethsimmons/moneroblock:v0.1.1
|
||||
restart: unless-stopped
|
||||
container_name: moneroblock
|
||||
ports:
|
||||
- ${APP_PORT}:31312
|
||||
command:
|
||||
- "--daemon"
|
||||
- "${DAEMON_ADDRESS:-node.sethforprivacy.com:18089}"
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.moneroblock.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.moneroblock.entrypoints: websecure
|
||||
traefik.http.routers.moneroblock.service: moneroblock
|
||||
traefik.http.routers.moneroblock.tls.certresolver: myresolver
|
||||
traefik.http.services.moneroblock.loadbalancer.server.port: 31312
|
24
apps/moneroblock/metadata/description.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
# MoneroBlock
|
||||
|
||||
MoneroBlock is a trustless block explorer for the Monero payment network.
|
||||
|
||||
## Running MoneroBlock
|
||||
|
||||
Once MoneroBlock is started open [127.0.0.1:31312](http://127.0.0.1:31312/) with your browser.
|
||||
|
||||
### Running with a remote daemon
|
||||
|
||||
Specify your own node when installing MoneroBlock using the format `node.host.name:port`, i.e. `node.sethforprivacy.com:18089`.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you have issues running this, please open an issue against the following repository:
|
||||
|
||||
https://github.com/sethforprivacy/moneroblock-docker/issues
|
||||
|
||||
## Donate
|
||||
|
||||
If you wish to support the MoneroBlock development please donate any amount:
|
||||
|
||||
Monero: `892HHTyDg5mJm5eWJWZ8L1ZMYnnWExciQFFkpsgLh1DfVUXfUFj6z1X2jDD2ZRQLiwWYskeyNkrtpAHse4M3G29uBfiYgVL`
|
||||
Wownero: `WW439rW1B6p4pA9oca1Aip6h2dneUCHTL9qdn5fstfkB1DzokvrU2hYGASDUcyfaa9gv5kXS82TUhRALMGJGFmBA26jAz3qM5ss`
|
BIN
apps/moneroblock/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
16
apps/monerod/config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Monero Daemon",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 18080,
|
||||
"id": "monerod",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"categories": ["finance"],
|
||||
"description": "A device on the Internet running the Monero software, with a full copy of the Monero blockchain, actively assisting the Monero network. This is a simple and straightforward Dockerized monerod built from source and exposing standard ports. Please note that running this requires >50GB of free disk space and is best run on solid-state (SSD) storage.",
|
||||
"short_desc": "Monero is a private, decentralized cryptocurrency that keeps your finances confidential and secure.",
|
||||
"author": "sethforprivacy",
|
||||
"source": "https://github.com/sethforprivacy/simple-monerod-docker",
|
||||
"form_fields": []
|
||||
}
|
29
apps/monerod/docker-compose.yml
Normal file
|
@ -0,0 +1,29 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
monerod:
|
||||
image: sethsimmons/simple-monerod:latest
|
||||
dns:
|
||||
- ${DNS_IP}
|
||||
ports:
|
||||
- ${APP_PORT}:18080
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
container_name: monerod
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/home/monero/.bitmonero
|
||||
command: >-
|
||||
--rpc-restricted-bind-ip=0.0.0.0
|
||||
--rpc-restricted-bind-port=18089
|
||||
--public-node
|
||||
--no-igd
|
||||
--enable-dns-blocklist
|
||||
--prune-blockchain
|
||||
--zmq-pub=tcp://0.0.0.0:18083
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.monerod.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.monerod.entrypoints: websecure
|
||||
traefik.http.routers.monerod.service: monerod
|
||||
traefik.http.routers.monerod.tls.certresolver: myresolver
|
||||
traefik.http.services.monerod.loadbalancer.server.port: 18089
|
20
apps/monerod/metadata/description.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
# The Monero network daemon
|
||||
|
||||
Monero is a private, decentralized cryptocurrency that keeps your finances confidential and secure.
|
||||
|
||||
## Required hardware
|
||||
|
||||
- 2+ vCPUs/cores
|
||||
- 4GB+ RAM
|
||||
- 75GB+ SSD
|
||||
|
||||
## Why run your own Monero node?
|
||||
|
||||
The Monero network relies on a distributed web of Monero nodes, each of which validate transactions, propagate transactions to the rest of the network, and helps new nodes easily and quickly synchronize to the current state of the network.
|
||||
|
||||
Running a Monero node for yourself not only helps to give you the stronger network-level privacy guarantees, but also helps to increase the decentralization, stability, and speed of the Monero network.
|
||||
|
||||
Each node can expose two different services, each of which has a positive impact on the network in a unique way:
|
||||
|
||||
- Peer-to-Peer (p2p) port (default 18080): this port allows other nodes on the network to connect to your node to download the blockchain and to send you any transactions they validate that you do not yet have. It also increases overall network privacy, as your node participates in the [Dandelion++](https://www.monerooutreach.org/stories/dandelion.html) propagation of transactions.
|
||||
- Remote Procedure Call (RPC) port (default 18089 for restricted): Exposing this port (especially with the `public-node` arg) allows other users on the network, especially those using mobile wallets or the GUI wallet in "Simple" mode, to connect to your node to sync their wallets, without needing to run their own full node locally.
|
BIN
apps/monerod/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
|
@ -4,13 +4,21 @@
|
|||
"available": true,
|
||||
"port": 8094,
|
||||
"id": "n8n",
|
||||
"tipi_version": 1,
|
||||
"version": "0.186.1",
|
||||
"tipi_version": 2,
|
||||
"version": "0.195.5",
|
||||
"categories": ["automation"],
|
||||
"description": "n8n is an extendable workflow automation tool. With a fair-code distribution model, n8n will always have visible source code, be available to self-host, and allow you to add your own custom functions, logic and apps. n8n's node-based approach makes it highly versatile, enabling you to connect anything to everything.",
|
||||
"short_desc": "Workflow Automation Tool. Alternative to Zapier",
|
||||
"author": "n8n.io",
|
||||
"source": "https://github.com/n8n-io/n8n",
|
||||
"website": "https://n8n.io/",
|
||||
"form_fields": []
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Database password",
|
||||
"min": 30,
|
||||
"max": 30,
|
||||
"env_variable": "DB_PASSWORD"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ services:
|
|||
volumes:
|
||||
- ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=tipi
|
||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||
- POSTGRES_USER=tipi
|
||||
- POSTGRES_DB=n8n
|
||||
networks:
|
||||
|
@ -16,7 +16,7 @@ services:
|
|||
|
||||
n8n:
|
||||
container_name: n8n
|
||||
image: n8nio/n8n:0.186.1
|
||||
image: n8nio/n8n:0.195.5
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- ${APP_PORT}:5678
|
||||
|
|
15
apps/navidrome/config.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"name": "Navidrome",
|
||||
"available": true,
|
||||
"port": 4533,
|
||||
"exposable": true,
|
||||
"id": "navidrome",
|
||||
"description": "Modern Music Server and Streamer compatible with Subsonic/Airsonic",
|
||||
"tipi_version": 1,
|
||||
"version": "0.47.5",
|
||||
"categories": ["media", "music"],
|
||||
"short_desc": "A selfhosted music server",
|
||||
"author": "https://github.com/Bvoxl",
|
||||
"source": "https://github.com/navidrome/navidrome/",
|
||||
"form_fields": []
|
||||
}
|
25
apps/navidrome/docker-compose.yml
Normal file
|
@ -0,0 +1,25 @@
|
|||
version: "3"
|
||||
services:
|
||||
navidrome:
|
||||
container_name: navidrome
|
||||
image: deluan/navidrome:latest
|
||||
ports:
|
||||
- ${APP_PORT}:4533
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
ND_SCANSCHEDULE: 1h
|
||||
ND_LOGLEVEL: info
|
||||
ND_SESSIONTIMEOUT: 24h
|
||||
ND_BASEURL: ""
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/navidrome/data:/data
|
||||
- ${ROOT_FOLDER_HOST}/media/data/music:/music:ro
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.navidrome.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.navidrome.entrypoints: websecure
|
||||
traefik.http.routers.navidrome.service: navidrome
|
||||
traefik.http.routers.navidrome.tls.certresolver: myresolver
|
||||
traefik.http.services.navidrome.loadbalancer.server.port: 4533
|
1
apps/navidrome/metadata/description.md
Normal file
|
@ -0,0 +1 @@
|
|||
Navidrome is an open source web-based music collection server and streamer. It gives you freedom to listen to your music collection from any browser or mobile device. It's like your personal Spotify!
|
BIN
apps/navidrome/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
|
@ -5,7 +5,7 @@
|
|||
"exposable": true,
|
||||
"port": 8083,
|
||||
"id": "nextcloud",
|
||||
"tipi_version": 2,
|
||||
"tipi_version": 4,
|
||||
"version": "24.0.4",
|
||||
"categories": ["data"],
|
||||
"description": "Nextcloud is a self-hosted, open source, and fully-featured cloud storage solution for your personal files, office documents, and photos.",
|
||||
|
@ -25,7 +25,7 @@
|
|||
"type": "password",
|
||||
"label": "Password",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"min": 10,
|
||||
"required": true,
|
||||
"env_variable": "NEXTCLOUD_ADMIN_PASSWORD"
|
||||
}
|
||||
|
|
|
@ -52,7 +52,10 @@ services:
|
|||
- POSTGRES_DB=nextcloud
|
||||
- NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
|
||||
- NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
|
||||
- NEXTCLOUD_TRUSTED_DOMAINS=${INTERNAL_IP}:${APP_PORT} ${APP_DOMAIN}
|
||||
- NEXTCLOUD_TRUSTED_DOMAINS=${APP_DOMAIN}
|
||||
- TRUSTED_PROXIES=172.16.0.0/12
|
||||
- OVERWRITEHOST=${APP_DOMAIN}
|
||||
- OVERWRITEPROTOCOL=${APP_PROTOCOL:-http}
|
||||
depends_on:
|
||||
- db-nextcloud
|
||||
- redis-nextcloud
|
||||
|
@ -65,4 +68,15 @@ services:
|
|||
traefik.http.routers.nextcloud.service: nextcloud
|
||||
traefik.http.routers.nextcloud.tls.certresolver: myresolver
|
||||
traefik.http.services.nextcloud.loadbalancer.server.port: 80
|
||||
|
||||
traefik.http.middlewares.nextcloud.headers.browserXSSFilter: true
|
||||
traefik.http.middlewares.nextcloud.headers.contentTypeNosniff: true
|
||||
traefik.http.middlewares.nextcloud.headers.stsIncludeSubdomains: true
|
||||
traefik.http.middlewares.nextcloud.headers.stsPreload: true
|
||||
traefik.http.middlewares.nextcloud.headers.stsSeconds: 155520011
|
||||
traefik.http.middlewares.nextcloud_redirect.redirectregex.permanent: true
|
||||
traefik.http.middlewares.nextcloud_redirect.redirectregex.regex: https://(.*)/.well-known/(card|cal)dav
|
||||
traefik.http.middlewares.nextcloud_redirect.redirectregex.replacement: https://$${1}/remote.php/dav/
|
||||
traefik.http.routers.nextcloud.middlewares: nextcloud,nextcloud_redirect,nextcloud-https
|
||||
traefik.http.middlewares.nextcloud.headers.customRequestHeaders.X-Forwarded-Proto: https
|
||||
traefik.http.middlewares.nextcloud-https.redirectscheme.scheme: https
|
||||
traefik.http.routers.nextcloud-http.middlewares: nextcloud-https@docker
|
||||
|
|
|
@ -26,4 +26,12 @@ Enterprise? Public Sector or Education user? You may want to have a look into [*
|
|||
|
||||
You can also [get support for Nextcloud](https://nextcloud.com/support)!
|
||||
|
||||
## Reset password
|
||||
Nextcloud does not support password resets from environment variables. If you want to change your password run the following commands in your terminal:
|
||||
|
||||
```bash
|
||||
sudo docker exec -u www-data -it nextcloud /bin/bash
|
||||
php occ user:resetpassword username
|
||||
```
|
||||
|
||||
![](https://raw.githubusercontent.com/nextcloud/screenshots/master/files/Files%20Sharing.png)
|
|
@ -2,9 +2,10 @@
|
|||
"$schema": "../schema.json",
|
||||
"name": "Nitter",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8106,
|
||||
"id": "nitter",
|
||||
"tipi_version": 1,
|
||||
"tipi_version": 2,
|
||||
"version": "latest",
|
||||
"categories": ["social"],
|
||||
"description": "A free and open source alternative Twitter front-end focused on privacy and performance.",
|
||||
|
|
|
@ -13,8 +13,20 @@ services:
|
|||
depends_on:
|
||||
- nitter-redis
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost:8080"]
|
||||
interval: 1m
|
||||
timeout: 3s
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.nitter.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.nitter.entrypoints: websecure
|
||||
traefik.http.routers.nitter.service: nitter
|
||||
traefik.http.routers.nitter.tls.certresolver: myresolver
|
||||
traefik.http.services.nitter.loadbalancer.server.port: 8080
|
||||
|
||||
nitter-redis:
|
||||
image: redis:6-alpine
|
||||
image: redis:alpine
|
||||
container_name: nitter-redis
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
|
|
@ -3,8 +3,9 @@
|
|||
"name": "PhotoPrism",
|
||||
"port": 8110,
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"id": "photoprism",
|
||||
"tipi_version": 1,
|
||||
"tipi_version": 2,
|
||||
"version": "latest",
|
||||
"categories": ["photography"],
|
||||
"description": "PhotoPrism® is an AI-Powered Photos App for the Decentralized Web. It makes use of the latest technologies to tag and find pictures automatically without getting in your way. You can run it at home, on a private server, or in the cloud. Default username: admin",
|
||||
|
@ -19,6 +20,16 @@
|
|||
"min": 8,
|
||||
"required": true,
|
||||
"env_variable": "PHOTOPRISM_ADMIN_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Photoprism DB password",
|
||||
"env_variable": "DB_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Photoprism root DB password",
|
||||
"env_variable": "DB_ROOT_PASSWORD"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
photoprism:
|
||||
# TODO: Special image for arm/v7 is available
|
||||
|
@ -12,7 +11,7 @@ services:
|
|||
- "${APP_PORT}:2342"
|
||||
environment:
|
||||
PHOTOPRISM_ADMIN_PASSWORD: ${PHOTOPRISM_ADMIN_PASSWORD}
|
||||
PHOTOPRISM_SITE_URL: "http://localhost:2342/"
|
||||
PHOTOPRISM_SITE_URL: "${APP_PROTOCOL:-http}://${APP_DOMAIN}/"
|
||||
PHOTOPRISM_ORIGINALS_LIMIT: 5000
|
||||
PHOTOPRISM_HTTP_COMPRESSION: "gzip"
|
||||
PHOTOPRISM_LOG_LEVEL: "info"
|
||||
|
@ -34,7 +33,7 @@ services:
|
|||
PHOTOPRISM_DATABASE_SERVER: "photoprism-db:3306"
|
||||
PHOTOPRISM_DATABASE_NAME: "photoprism"
|
||||
PHOTOPRISM_DATABASE_USER: "photoprism"
|
||||
PHOTOPRISM_DATABASE_PASSWORD: "photoprism"
|
||||
PHOTOPRISM_DATABASE_PASSWORD: "${DB_PASSWORD}"
|
||||
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
|
||||
working_dir: "/photoprism"
|
||||
volumes:
|
||||
|
@ -42,10 +41,17 @@ services:
|
|||
- "${APP_DATA_DIR}/data/photoprism/storage:/photoprism/storage"
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.photoprism.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.photoprism.entrypoints: websecure
|
||||
traefik.http.routers.photoprism.service: photoprism
|
||||
traefik.http.routers.photoprism.tls.certresolver: myresolver
|
||||
traefik.http.services.photoprism.loadbalancer.server.port: 2342
|
||||
|
||||
photoprism-db:
|
||||
restart: unless-stopped
|
||||
image: mariadb:10.8.3
|
||||
image: mariadb:10.8
|
||||
container_name: photoprism-db
|
||||
command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
|
||||
volumes:
|
||||
|
@ -53,7 +59,7 @@ services:
|
|||
environment:
|
||||
MARIADB_DATABASE: "photoprism"
|
||||
MARIADB_USER: "photoprism"
|
||||
MARIADB_PASSWORD: "photoprism"
|
||||
MARIADB_ROOT_PASSWORD: "photoprism"
|
||||
MARIADB_PASSWORD: "${DB_PASSWORD}"
|
||||
MARIADB_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
|
||||
networks:
|
||||
- tipi_main_network
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
"ports": [53]
|
||||
},
|
||||
"id": "pihole",
|
||||
"tipi_version": 1,
|
||||
"version": "2022.07.1",
|
||||
"tipi_version": 2,
|
||||
"version": "2022.09.4",
|
||||
"categories": ["network", "security"],
|
||||
"description": "The Pi-hole® is a DNS sinkhole that protects your devices from unwanted content without installing any client-side software.",
|
||||
"short_desc": "A black hole for Internet advertisements",
|
||||
|
@ -22,6 +22,12 @@
|
|||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "APP_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "ip",
|
||||
"label": "Network Interface (default: 0.0.0.0)",
|
||||
"required": false,
|
||||
"env_variable": "NETWORK_INTERFACE"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -14,15 +14,15 @@ services:
|
|||
pihole:
|
||||
# depends_on: [unbound]
|
||||
container_name: pihole
|
||||
image: pihole/pihole:2022.07.1
|
||||
image: pihole/pihole:2022.09.4
|
||||
restart: unless-stopped
|
||||
hostname: pihole
|
||||
dns:
|
||||
- 127.0.0.1
|
||||
# - 10.21.21.200 # Points to unbound
|
||||
ports:
|
||||
- 53:53/tcp
|
||||
- 53:53/udp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/tcp
|
||||
- ${NETWORK_INTERFACE:-0.0.0.0}:53:53/udp
|
||||
- ${APP_PORT}:80
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/pihole:/etc/pihole
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"exposable": true,
|
||||
"port": 32400,
|
||||
"id": "plex",
|
||||
"tipi_version": 4,
|
||||
"version": "1.28.1",
|
||||
"tipi_version": 5,
|
||||
"version": "1.28.2",
|
||||
"url_suffix": "/web",
|
||||
"categories": ["media"],
|
||||
"description": "",
|
||||
|
|
|
@ -2,15 +2,17 @@ version: "3.7"
|
|||
|
||||
services:
|
||||
plex:
|
||||
image: lscr.io/linuxserver/plex:1.28.1
|
||||
image: lscr.io/linuxserver/plex:1.28.2
|
||||
container_name: plex
|
||||
network_mode: host
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- VERSION=docker
|
||||
- ADVERTISE_IP=${APP_PROTOCOL:-http}://${APP_DOMAIN}/
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${APP_DATA_DIR}/data/transcode:/transcode
|
||||
- ${ROOT_FOLDER_HOST}/media/data:/media
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"available": true,
|
||||
"https": true,
|
||||
"id": "portainer",
|
||||
"tipi_version": 3,
|
||||
"version": "2.14.2",
|
||||
"tipi_version": 4,
|
||||
"version": "2.15.1",
|
||||
"categories": ["utilities"],
|
||||
"description": "",
|
||||
"short_desc": "Making Docker and Kubernetes management easy.",
|
||||
|
|
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce:2.14.2-alpine
|
||||
image: portainer/portainer-ce:2.15.1-alpine
|
||||
container_name: portainer
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
|
|
16
apps/privatebin/config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "PrivateBin",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8122,
|
||||
"id": "privatebin",
|
||||
"tipi_version": 1,
|
||||
"version": "1.4.0",
|
||||
"categories": ["utilities"],
|
||||
"description": "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted and decrypted in the browser using 256bit AES in Galois Counter mode.",
|
||||
"short_desc": "A minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.",
|
||||
"author": "PrivateBin",
|
||||
"source": "https://github.com/PrivateBin/PrivateBin",
|
||||
"form_fields": []
|
||||
}
|
21
apps/privatebin/docker-compose.yml
Normal file
|
@ -0,0 +1,21 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
privatebin:
|
||||
image: privatebin/nginx-fpm-alpine:1.4.0
|
||||
container_name: privatebin
|
||||
dns:
|
||||
- ${DNS_IP}
|
||||
ports:
|
||||
- ${APP_PORT}:8080
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/srv/data
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.privatebin.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.privatebin.entrypoints: websecure
|
||||
traefik.http.routers.privatebin.service: privatebin
|
||||
traefik.http.routers.privatebin.tls.certresolver: myresolver
|
||||
traefik.http.services.privatebin.loadbalancer.server.port: 8080
|
61
apps/privatebin/metadata/description.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
# [![PrivateBin](https://cdn.rawgit.com/PrivateBin/assets/master/images/preview/logoSmall.png)](https://privatebin.info/)
|
||||
|
||||
**PrivateBin** is a minimalist, open source online
|
||||
[pastebin](https://en.wikipedia.org/wiki/Pastebin)
|
||||
where the server has zero knowledge of pasted data.
|
||||
|
||||
Data is encrypted and decrypted in the browser using 256bit AES in
|
||||
[Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
|
||||
|
||||
This is a fork of ZeroBin, originally developed by
|
||||
[Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). PrivateBin was
|
||||
refactored to allow easier and cleaner extensions and has many additional
|
||||
features. It is, however, still fully compatible to the original ZeroBin 0.19
|
||||
data storage scheme. Therefore, such installations can be upgraded to PrivateBin
|
||||
without losing any data.
|
||||
|
||||
## What PrivateBin provides
|
||||
|
||||
+ As a server administrator you don't have to worry if your users post content
|
||||
that is considered illegal in your country. You have plausible deniability of
|
||||
any of the pastes content. If requested or enforced, you can delete any paste
|
||||
from your system.
|
||||
|
||||
+ Pastebin-like system to store text documents, code samples, etc.
|
||||
|
||||
+ Encryption of data sent to server.
|
||||
|
||||
+ Possibility to set a password which is required to read the paste. It further
|
||||
protects a paste and prevents people stumbling upon your paste's link
|
||||
from being able to read it without the password.
|
||||
|
||||
## What it doesn't provide
|
||||
|
||||
- As a user you have to trust the server administrator not to inject any
|
||||
malicious code. For security, a PrivateBin installation *has to be used over*
|
||||
*HTTPS*! Otherwise you would also have to trust your internet provider, and
|
||||
any jurisdiction the traffic passes through. Additionally the instance should
|
||||
be secured by
|
||||
[HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security). It can
|
||||
use traditional certificate authorities and/or use a
|
||||
[DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions)
|
||||
protected
|
||||
[DANE](https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities)
|
||||
record.
|
||||
|
||||
- The "key" used to encrypt the paste is part of the URL. If you publicly post
|
||||
the URL of a paste that is not password-protected, anyone can read it.
|
||||
Use a password if you want your paste to remain private. In that case, make
|
||||
sure to use a strong password and share it privately and end-to-end-encrypted.
|
||||
|
||||
- A server admin can be forced to hand over access logs to the authorities.
|
||||
PrivateBin encrypts your text and the discussion contents, but who accessed a
|
||||
paste (first) might still be disclosed via access logs.
|
||||
|
||||
- In case of a server breach your data is secure as it is only stored encrypted
|
||||
on the server. However, the server could be absused or the server admin could
|
||||
be legally forced into sending malicious code to their users, which logs
|
||||
the decryption key and sends it to a server when a user accesses a paste.
|
||||
Therefore, do not access any PrivateBin instance if you think it has been
|
||||
compromised. As long as no user accesses this instance with a previously
|
||||
generated URL, the content can't be decrypted.
|
BIN
apps/privatebin/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 26 KiB |
23
apps/searxng/config.json
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "SearXNG",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8127,
|
||||
"id": "searxng",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"categories": ["social"],
|
||||
"description": "SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled.",
|
||||
"short_desc": "Privacy-respecting, hackable metasearch engine",
|
||||
"author": "searxng",
|
||||
"source": "https://github.com/searxng/searxng",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "random",
|
||||
"label": "SearXNG Secret Key",
|
||||
"min": 32,
|
||||
"env_variable": "SEARXNG_SECRET_KEY"
|
||||
}
|
||||
]
|
||||
}
|
2046
apps/searxng/data/settings.yml
Normal file
24
apps/searxng/docker-compose.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
searxng:
|
||||
container_name: searxng
|
||||
image: searxng/searxng:latest
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}/data:/etc/searxng"
|
||||
ports:
|
||||
- ${APP_PORT}:8080
|
||||
environment:
|
||||
- BIND_ADDRESS=0.0.0.0:8080
|
||||
- BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}/
|
||||
- SECRET_KEY=${SEARXNG_SECRET_KEY}
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.searxng.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.searxng.entrypoints: websecure
|
||||
traefik.http.routers.searxng.service: searxng
|
||||
traefik.http.routers.searxng.tls.certresolver: myresolver
|
||||
traefik.http.services.searxng.loadbalancer.server.port: 8080
|
21
apps/searxng/metadata/description.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
## Privacy-respecting, hackable metasearch engine
|
||||
|
||||
SearXNG is a free internet metasearch engine which aggregates results from more than 70 search services. Users are neither tracked nor profiled. Additionally, SearXNG can be used over Tor for online anonymity.
|
||||
|
||||
### Differences to searx
|
||||
|
||||
SearXNG is a fork of searx. Here are some of the changes:
|
||||
|
||||
- User experience
|
||||
- Huge update of the simple theme:
|
||||
- usable on desktop, tablet and mobile
|
||||
- light and dark versions (you can choose in the preferences)
|
||||
- support right-to-left languages
|
||||
- the translations are up to date, you can contribute on Weblate
|
||||
- the preferences page has been updated:
|
||||
- you can see which engines are reliable or not
|
||||
- engines are grouped inside each tab
|
||||
- each engine has a description
|
||||
- thanks to the anonymous metrics, it is easier to report a bug of an engine and thus engines get fixed more quickly
|
||||
- if you don't want any metrics to be recorded, you can disable them on the server
|
||||
- administrator can block and/or replace the URLs in the search results
|
BIN
apps/searxng/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
16
apps/send/config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Send",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8126,
|
||||
"id": "send",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"categories": ["utilities"],
|
||||
"description": "A file sharing experiment which allows you to send encrypted files to other users.",
|
||||
"short_desc": "Simple, private file sharing. https://send.vis.ee/",
|
||||
"author": "timvisee",
|
||||
"source": "https://gitlab.com/timvisee/send",
|
||||
"form_fields": []
|
||||
}
|
46
apps/send/docker-compose.yml
Normal file
|
@ -0,0 +1,46 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
send:
|
||||
image: registry.gitlab.com/timvisee/send:latest
|
||||
container_name: send
|
||||
restart: unless-stopped
|
||||
dns:
|
||||
- ${DNS_IP}
|
||||
ports:
|
||||
- ${APP_PORT}:1443
|
||||
networks:
|
||||
- tipi_main_network
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/uploads:/uploads
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
# Networking
|
||||
- BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN}
|
||||
# Redis
|
||||
- REDIS_HOST=send-redis
|
||||
# Storage Limit
|
||||
- MAX_FILE_SIZE=2147483648
|
||||
- DETECT_BASE_URL=true
|
||||
depends_on:
|
||||
- send-redis
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.send.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.send.entrypoints: websecure
|
||||
traefik.http.routers.send.service: send
|
||||
traefik.http.routers.send.tls.certresolver: myresolver
|
||||
traefik.http.services.send.loadbalancer.server.port: 1443
|
||||
|
||||
send-redis:
|
||||
image: redis:alpine
|
||||
container_name: send-redis
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/redis:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
retries: 30
|
||||
networks:
|
||||
- tipi_main_network
|
29
apps/send/metadata/description.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
A fork of Mozilla's [Firefox Send][mozilla-send].
|
||||
Mozilla discontinued Send, this fork is a community effort to keep the project
|
||||
up-to-date and alive.
|
||||
|
||||
- Forked [at][fork-commit] Mozilla's last publicly hosted version
|
||||
- _Mozilla_ & _Firefox_ branding [is][remove-branding-pr] removed so you can legally self-host
|
||||
- Kept compatible with [`ffsend`][ffsend] (CLI for Send)
|
||||
- Dependencies have been updated
|
||||
- Mozilla's [changes][mozilla-patches] since the fork have been selectively [merged][mozilla-patches-pr]
|
||||
- Mozilla's experimental report feature, download tokens, trust warnings and FxA changes are not included
|
||||
|
||||
Find an up-to-date Docker image here: [docs/docker.md](docs/docker.md)
|
||||
|
||||
The original project by Mozilla can be found [here][mozilla-send].
|
||||
Please consider to [donate][donate] to allow me to keep working on this.
|
||||
|
||||
Thanks [Mozilla][mozilla] for building this amazing tool!
|
||||
|
||||
[branch-mozilla-master]: https://gitlab.com/timvisee/send/-/tree/mozilla-master
|
||||
[branch-send-v3]: https://gitlab.com/timvisee/send/-/tree/send-v3
|
||||
[branch-send-v4]: https://gitlab.com/timvisee/send/-/tree/send-v4
|
||||
[donate]: https://timvisee.com/donate
|
||||
[ffsend]: https://github.com/timvisee/ffsend
|
||||
[fork-commit]: https://gitlab.com/timvisee/send/-/commit/3e9be676413a6e1baaf6a354c180e91899d10bec
|
||||
[mozilla-patches-pr]: https://gitlab.com/timvisee/send/-/merge_requests/3
|
||||
[mozilla-patches]: https://gitlab.com/timvisee/send/-/compare/3e9be676413a6e1baaf6a354c180e91899d10bec...mozilla-master
|
||||
[mozilla-send]: https://github.com/mozilla/send
|
||||
[mozilla]: https://mozilla.org/
|
||||
[remove-branding-pr]: https://gitlab.com/timvisee/send/-/merge_requests/2
|
BIN
apps/send/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
|
@ -7,7 +7,7 @@
|
|||
"tipi_version": 1,
|
||||
"version": "1.20",
|
||||
"categories": ["data", "utilities"],
|
||||
"description": "Syncthing is a peer-to-peer continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes. Your data is your data alone and you deserve to choose where it is stored, whether it is shared with some third party, and how it's transmitted over the internet.\n\nInstall the Syncthing app on your Umbrel and pair it with the Syncthing app on your phone or computer for a self hosted peer-to-peer backup solution.",
|
||||
"description": "Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers. We strive to fulfill the goals below. The goals are listed in order of importance, the most important one being the first. This is the summary version of the goal list - for more commentary, see the full Goals document.",
|
||||
"short_desc": "Peer-to-peer file synchronization between your devices",
|
||||
"author": "The Syncthing Foundation",
|
||||
"source": "https://github.com/syncthing",
|
||||
|
|
16
apps/teddit/config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "teddit",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8124,
|
||||
"id": "teddit",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"categories": ["social"],
|
||||
"description": "A free and open source alternative Reddit front-end focused on privacy. Inspired by the Nitter project.",
|
||||
"short_desc": "Alternative Reddit front-end focused on privacy https://teddit.net",
|
||||
"author": "teddit",
|
||||
"source": "https://codeberg.org/teddit/teddit",
|
||||
"form_fields": []
|
||||
}
|
45
apps/teddit/docker-compose.yml
Normal file
|
@ -0,0 +1,45 @@
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
teddit:
|
||||
image: teddit/teddit:latest
|
||||
container_name: teddit
|
||||
networks:
|
||||
- tipi_main_network
|
||||
ports:
|
||||
- ${APP_PORT}:8080
|
||||
depends_on:
|
||||
- teddit-redis
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- REDIS_HOST=teddit-redis
|
||||
- DOMAIN=${APP_DOMAIN}
|
||||
- THEME=dark
|
||||
- HTTPS_ENABLED=false
|
||||
- REDIRECT_HTTP_TO_HTTPS=false
|
||||
- REDIRECT_WWW=false
|
||||
healthcheck:
|
||||
test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost:8080/about"]
|
||||
interval: 1m
|
||||
timeout: 3s
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.teddit.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.teddit.entrypoints: websecure
|
||||
traefik.http.routers.teddit.service: teddit
|
||||
traefik.http.routers.teddit.tls.certresolver: myresolver
|
||||
traefik.http.services.teddit.loadbalancer.server.port: 8080
|
||||
|
||||
teddit-redis:
|
||||
image: redis:alpine
|
||||
container_name: teddit-redis
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/redis:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
retries: 30
|
||||
networks:
|
||||
- tipi_main_network
|
17
apps/teddit/metadata/description.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# teddit
|
||||
|
||||
[teddit.net](https://teddit.net)
|
||||
|
||||
A free and open source alternative Reddit front-end focused on privacy.
|
||||
Inspired by the [Nitter](https://github.com/zedeus/nitter) project.
|
||||
|
||||
* No JavaScript or ads
|
||||
* All requests go through the backend, client never talks to Reddit
|
||||
* Prevents Reddit from tracking your IP or JavaScript fingerprint
|
||||
* [Unofficial API](https://codeberg.org/teddit/teddit/wiki#teddit-api) (RSS & JSON support, no rate limits or Reddit account required)
|
||||
* Lightweight (teddit frontpage: ~30 HTTP requests with ~270 KB of data downloaded vs. Reddit frontpage: ~190 requests with ~24 MB)
|
||||
* Self-hostable. Anyone can setup an instance. An instance can either use Reddit's API with or without OAuth (so Reddit API key is not necessarily needed).
|
||||
|
||||
Join the teddit discussion room on Matrix: [#teddit:matrix.org](https://matrix.to/#/#teddit:matrix.org)
|
||||
|
||||
XMR: 832ogRwuoSs2JGYg7wJTqshidK7dErgNdfpenQ9dzMghNXQTJRby1xGbqC3gW3GAifRM9E84J91VdMZRjoSJ32nkAZnaCEj
|
BIN
apps/teddit/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
41
apps/tubearchivist/config.json
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Tube Archivist",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8120,
|
||||
"id": "tubearchivist",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"categories": ["media"],
|
||||
"description": "Once your YouTube video collection grows, it becomes hard to search and find a specific video. That's where Tube Archivist comes in: By indexing your video collection with metadata from YouTube, you can organize, search and enjoy your archived YouTube videos without hassle offline through a convenient web interface.",
|
||||
"short_desc": "Your self-hosted YouTube media server",
|
||||
"author": "bbilly1",
|
||||
"source": "https://github.com/tubearchivist/tubearchivist",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Tube Archivist Username",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "TA_USER"
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"label": "Tube Archivist Password",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "TA_PASSWORD"
|
||||
},
|
||||
{
|
||||
"type": "random",
|
||||
"label": "Elasticsearch Password",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "ELASTIC_PASSWORD"
|
||||
}
|
||||
]
|
||||
}
|
66
apps/tubearchivist/docker-compose.yml
Normal file
|
@ -0,0 +1,66 @@
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
tubearchivist:
|
||||
container_name: tubearchivist
|
||||
restart: unless-stopped
|
||||
image: bbilly1/tubearchivist:latest
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/media:/youtube
|
||||
- ${APP_DATA_DIR}/data/cache:/cache
|
||||
environment:
|
||||
- ES_URL=http://tubearchivist-es:9200
|
||||
- REDIS_HOST=tubearchivist-redis
|
||||
- HOST_UID=${UID}
|
||||
- HOST_GID=${GID}
|
||||
- TA_USERNAME=${TA_USER}
|
||||
- TA_PASSWORD=${TA_PASSWORD}
|
||||
- TA_HOST=${APP_DOMAIN}
|
||||
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
|
||||
depends_on:
|
||||
- tubearchivist-es
|
||||
- tubearchivist-redis
|
||||
networks:
|
||||
- tipi_main_network
|
||||
dns:
|
||||
- ${DNS_IP}
|
||||
ports:
|
||||
- ${APP_PORT}:8000
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.tubearchivist.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.tubearchivist.entrypoints: websecure
|
||||
traefik.http.routers.tubearchivist.service: tubearchivist
|
||||
traefik.http.routers.tubearchivist.tls.certresolver: myresolver
|
||||
traefik.http.services.tubearchivist.loadbalancer.server.port: 8000
|
||||
|
||||
tubearchivist-redis:
|
||||
image: redislabs/rejson:latest
|
||||
container_name: tubearchivist-redis
|
||||
restart: always
|
||||
networks:
|
||||
- tipi_main_network
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/redis-data:/data
|
||||
depends_on:
|
||||
- tubearchivist-es
|
||||
|
||||
tubearchivist-es:
|
||||
image: bbilly1/tubearchivist-es:latest
|
||||
container_name: tubearchivist-es
|
||||
restart: always
|
||||
environment:
|
||||
- "xpack.security.enabled=true"
|
||||
- "ELASTIC_PASSWORD=${ELASTIC_PASSWORD}"
|
||||
- "discovery.type=single-node"
|
||||
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
networks:
|
||||
- tipi_main_network
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/es:/usr/share/elasticsearch/data
|
||||
expose:
|
||||
- "9200"
|
21
apps/tubearchivist/metadata/description.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Your self-hosted YouTube media server
|
||||
|
||||
![Tube Archivist](https://github.com/tubearchivist/tubearchivist/blob/master/assets/tube-archivist-banner.jpg?raw=true "Tube Archivist Banner")
|
||||
|
||||
## Core functionality
|
||||
|
||||
* Subscribe to your favorite YouTube channels
|
||||
* Download Videos using **yt-dlp**
|
||||
* Index and make videos searchable
|
||||
* Play videos
|
||||
* Keep track of viewed and unviewed videos
|
||||
|
||||
## If you have issues running Tube Archivist
|
||||
|
||||
Please visit the following URL and ensure neither of the tips resolve the issue:
|
||||
|
||||
https://github.com/tubearchivist/tubearchivist#potential-pitfalls
|
||||
|
||||
If they do not, please open an app here and tag @sethforprivacy:
|
||||
|
||||
https://github.com/meienberger/runtipi-appstore/issues
|
BIN
apps/tubearchivist/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 80 KiB |
16
apps/uptime-kuma/config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Uptime Kuma",
|
||||
"available": true,
|
||||
"exposable": true,
|
||||
"port": 8125,
|
||||
"id": "uptime-kuma",
|
||||
"tipi_version": 1,
|
||||
"version": "1",
|
||||
"categories": ["utilities"],
|
||||
"description": "It is a self-hosted monitoring tool like Uptime Robot.",
|
||||
"short_desc": "A fancy self-hosted monitoring tool.",
|
||||
"author": "louislam",
|
||||
"source": "https://github.com/louislam/uptime-kuma",
|
||||
"form_fields": []
|
||||
}
|
21
apps/uptime-kuma/docker-compose.yml
Normal file
|
@ -0,0 +1,21 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:1
|
||||
container_name: uptime-kuma
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data:/app/data
|
||||
dns:
|
||||
- ${DNS_IP}
|
||||
ports:
|
||||
- ${APP_PORT}:3001
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
labels:
|
||||
traefik.enable: ${APP_EXPOSED}
|
||||
traefik.http.routers.uptime-kuma.rule: Host(`${APP_DOMAIN}`)
|
||||
traefik.http.routers.uptime-kuma.entrypoints: websecure
|
||||
traefik.http.routers.uptime-kuma.service: uptime-kuma
|
||||
traefik.http.routers.uptime-kuma.tls.certresolver: myresolver
|
||||
traefik.http.services.uptime-kuma.loadbalancer.server.port: 3001
|
33
apps/uptime-kuma/metadata/description.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Uptime Kuma
|
||||
|
||||
<div align="center" width="100%">
|
||||
<img src="https://github.com/louislam/uptime-kuma/raw/master/public/icon.svg" width="128" alt="" />
|
||||
</div>
|
||||
|
||||
It is a self-hosted monitoring tool like "Uptime Robot".
|
||||
|
||||
<img src="https://uptime.kuma.pet/img/dark.jpg" width="700" alt="" />
|
||||
|
||||
## 🥔 Live Demo
|
||||
|
||||
Try it!
|
||||
|
||||
https://demo.uptime.kuma.pet
|
||||
|
||||
It is a temporary live demo, all data will be deleted after 10 minutes. The server is located in Tokyo, so if you live far from there, it may affect your experience. I suggest that you should install and try it out for the best demo experience.
|
||||
|
||||
VPS is sponsored by Uptime Kuma sponsors on [Open Collective](https://opencollective.com/uptime-kuma)! Thank you so much!
|
||||
|
||||
## ⭐ Features
|
||||
|
||||
* Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server / Docker Containers.
|
||||
* Fancy, Reactive, Fast UI/UX.
|
||||
* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [90+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications).
|
||||
* 20 second intervals.
|
||||
* [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/languages)
|
||||
* Multiple Status Pages
|
||||
* Map Status Page to Domain
|
||||
* Ping Chart
|
||||
* Certificate Info
|
||||
* Proxy Support
|
||||
* 2FA available
|
BIN
apps/uptime-kuma/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
|
@ -2,7 +2,7 @@ version: '3.7'
|
|||
|
||||
services:
|
||||
vaultwarden:
|
||||
image: vaultwarden/server:1.25.1
|
||||
image: vaultwarden/server:1.25.2
|
||||
container_name: vaultwarden
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
|
|
26
apps/zerotier/config.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"$schema": "../schema.json",
|
||||
"name": "Zerotier",
|
||||
"available": true,
|
||||
"port": 9993,
|
||||
"id": "zerotier",
|
||||
"tipi_version": 1,
|
||||
"version": "v1.10.1",
|
||||
"categories": ["network", "security"],
|
||||
"description": "ZeroTier combines the capabilities of VPN and SD-WAN, simplifying network management.",
|
||||
"short_desc": "Easy to use zero configuration VPN.",
|
||||
"author": "© ZeroTier Inc.",
|
||||
"source": "https://github.com/zerotier/ZeroTierOne",
|
||||
"website": "hhttps://www.zerotier.com",
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Network ID",
|
||||
"hint": "Create one at https://my.zerotier.com/",
|
||||
"max": 16,
|
||||
"min": 16,
|
||||
"required": true,
|
||||
"env_variable": "NETWORK_ID"
|
||||
}
|
||||
]
|
||||
}
|
19
apps/zerotier/docker-compose.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
zerotier:
|
||||
container_name: zerotier
|
||||
image: zerotier/zerotier:1.10.1
|
||||
restart: on-failure
|
||||
command: "${NETWORK_ID}"
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun
|
||||
healthcheck:
|
||||
test: ['CMD','true']
|
||||
network_mode: host
|
||||
# TO DO: Pass host data to retain zerotier id, or setup a volume. Prefer ~stateless.
|
||||
# networks:
|
||||
# - tipi_main_network
|
||||
# mac_address: ${MAC_ADDRESS}
|
10
apps/zerotier/metadata/description.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
## Securely Connect Any Device, Anywhere.
|
||||
|
||||
ZeroTier combines the capabilities of VPN and SD-WAN, simplifying network management.
|
||||
Connect team members from anywhere in the world on any device. ZeroTier creates secure networks between on-premise, cloud, desktop, and mobile devices.
|
||||
Emulates Layer 2 Ethernet with multipath, multicast, and bridging capabilities.
|
||||
ZeroTier’s zero-trust networking solution provides scalable security with 256-bit end-to-end encryption.
|
||||
|
||||
Create a ZeroTier network at [https://my.zerotier.com/](https://my.zerotier.com/) and invite your team members to join. Once they accept the invitation, they will be able to access the network from any device, anywhere in the world.
|
||||
|
||||
![zt](https://www.zerotier.com/wp-content/uploads/2020/08/ZT_NetworkGraphic_Homepage.png)
|
BIN
apps/zerotier/metadata/logo.jpg
Normal file
After Width: | Height: | Size: 50 KiB |