commit
7b2d7c12fd
18 changed files with 272 additions and 6 deletions
|
@ -13,9 +13,12 @@
|
|||
Tipi is a personal homeserver orchestrator. It is running docker containers under the hood and provides a simple web interface to manage them. Every service comes with an opinionated configuration in order to remove the need for manual configuration and network setup.
|
||||
|
||||
## Apps available
|
||||
- [Calibre-Web](https://github.com/janeczku/calibre-web) - Web Ebook Reader
|
||||
- [Code-Server](https://github.com/filebrowser/filebrowser) - Web VS Code
|
||||
- [Filebrowser](https://github.com/filebrowser/filebrowser) - Web File Browser
|
||||
- [Freshrss](https://github.com/FreshRSS/FreshRSS) - A free, self-hostable RSS aggregator
|
||||
- [Invidious](https://github.com/iv-org/invidious) - An alternative front-end to YouTube
|
||||
- [Homarr](https://github.com/ajnart/homarr) - A homepage for your server.
|
||||
- [Jackett](https://github.com/Jackett/Jackett) - API Support for your favorite torrent trackers
|
||||
- [Jellyfin](https://github.com/jellyfin/jellyfin) - A media server for your home collection
|
||||
- [Joplin](https://github.com/laurent22/joplin) - Privacy focused note-taking app
|
||||
|
@ -28,6 +31,7 @@ Tipi is a personal homeserver orchestrator. It is running docker containers unde
|
|||
- [Tailscale](https://github.com/tailscale/tailscale) - The easiest, most secure way to use WireGuard and 2FA.
|
||||
- [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
|
||||
- [Adguard Home](https://github.com/AdguardTeam/AdGuardHome) - Adguard Home DNS adblocker
|
||||
## 🛠 Installation
|
||||
### Installation Requirements
|
||||
- Ubuntu 18.04 LTS or higher (or Debian 10)
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
0.1.4
|
||||
0.1.5
|
16
apps/adguard/config.json
Normal file
16
apps/adguard/config.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"name": "Adguard",
|
||||
"available": true,
|
||||
"port": 8104,
|
||||
"id": "adguard",
|
||||
"description": "Adguard is the best way to get rid of annoying ads and online tracking and protect your computer from malware. Make your web surfing fast, safe and ad-free.",
|
||||
"short_desc": "World's most advanced adblocker!",
|
||||
"author": "ArneNaessens",
|
||||
"source": "https://github:com/AdguardTeam",
|
||||
"image": "https://avatars.githubusercontent.com/u/8361145?s=200&v=4",
|
||||
"requirements": {
|
||||
"ports": [53]
|
||||
},
|
||||
"form_fields": {
|
||||
}
|
||||
}
|
131
apps/adguard/data/conf/AdGuardHome.yaml
Normal file
131
apps/adguard/data/conf/AdGuardHome.yaml
Normal file
|
@ -0,0 +1,131 @@
|
|||
bind_host: 0.0.0.0
|
||||
bind_port: 80
|
||||
beta_bind_port: 0
|
||||
users: []
|
||||
auth_attempts: 5
|
||||
block_auth_min: 15
|
||||
http_proxy: ""
|
||||
language: ""
|
||||
debug_pprof: false
|
||||
web_session_ttl: 720
|
||||
dns:
|
||||
bind_hosts:
|
||||
- 0.0.0.0
|
||||
port: 53
|
||||
statistics_interval: 1
|
||||
querylog_enabled: true
|
||||
querylog_file_enabled: true
|
||||
querylog_interval: 2160h
|
||||
querylog_size_memory: 1000
|
||||
anonymize_client_ip: false
|
||||
protection_enabled: true
|
||||
blocking_mode: default
|
||||
blocking_ipv4: ""
|
||||
blocking_ipv6: ""
|
||||
blocked_response_ttl: 10
|
||||
parental_block_host: family-block.dns.adguard.com
|
||||
safebrowsing_block_host: standard-block.dns.adguard.com
|
||||
ratelimit: 20
|
||||
ratelimit_whitelist: []
|
||||
refuse_any: true
|
||||
upstream_dns:
|
||||
- https://dns10.quad9.net/dns-query
|
||||
upstream_dns_file: ""
|
||||
bootstrap_dns:
|
||||
- 9.9.9.10
|
||||
- 149.112.112.10
|
||||
- 2620:fe::10
|
||||
- 2620:fe::fe:10
|
||||
all_servers: false
|
||||
fastest_addr: false
|
||||
fastest_timeout: 1s
|
||||
allowed_clients: []
|
||||
disallowed_clients: []
|
||||
blocked_hosts:
|
||||
- version.bind
|
||||
- id.server
|
||||
- hostname.bind
|
||||
trusted_proxies:
|
||||
- 127.0.0.0/8
|
||||
- ::1/128
|
||||
cache_size: 4194304
|
||||
cache_ttl_min: 0
|
||||
cache_ttl_max: 0
|
||||
cache_optimistic: false
|
||||
bogus_nxdomain: []
|
||||
aaaa_disabled: false
|
||||
enable_dnssec: false
|
||||
edns_client_subnet: false
|
||||
max_goroutines: 300
|
||||
ipset: []
|
||||
filtering_enabled: true
|
||||
filters_update_interval: 24
|
||||
parental_enabled: false
|
||||
safesearch_enabled: false
|
||||
safebrowsing_enabled: false
|
||||
safebrowsing_cache_size: 1048576
|
||||
safesearch_cache_size: 1048576
|
||||
parental_cache_size: 1048576
|
||||
cache_time: 30
|
||||
rewrites: []
|
||||
blocked_services: []
|
||||
upstream_timeout: 10s
|
||||
local_domain_name: lan
|
||||
resolve_clients: true
|
||||
use_private_ptr_resolvers: true
|
||||
local_ptr_upstreams: []
|
||||
tls:
|
||||
enabled: false
|
||||
server_name: ""
|
||||
force_https: false
|
||||
port_https: 443
|
||||
port_dns_over_tls: 853
|
||||
port_dns_over_quic: 784
|
||||
port_dnscrypt: 0
|
||||
dnscrypt_config_file: ""
|
||||
allow_unencrypted_doh: false
|
||||
strict_sni_check: false
|
||||
certificate_chain: ""
|
||||
private_key: ""
|
||||
certificate_path: ""
|
||||
private_key_path: ""
|
||||
filters:
|
||||
- enabled: true
|
||||
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
|
||||
name: AdGuard DNS filter
|
||||
id: 1
|
||||
- enabled: false
|
||||
url: https://adaway.org/hosts.txt
|
||||
name: AdAway Default Blocklist
|
||||
id: 2
|
||||
whitelist_filters: []
|
||||
user_rules: []
|
||||
dhcp:
|
||||
enabled: false
|
||||
interface_name: ""
|
||||
dhcpv4:
|
||||
gateway_ip: ""
|
||||
subnet_mask: ""
|
||||
range_start: ""
|
||||
range_end: ""
|
||||
lease_duration: 86400
|
||||
icmp_timeout_msec: 1000
|
||||
options: []
|
||||
dhcpv6:
|
||||
range_start: ""
|
||||
lease_duration: 86400
|
||||
ra_slaac_only: false
|
||||
ra_allow_slaac: false
|
||||
clients: []
|
||||
log_compress: false
|
||||
log_localtime: false
|
||||
log_max_backups: 0
|
||||
log_max_size: 100
|
||||
log_max_age: 3
|
||||
log_file: ""
|
||||
verbose: false
|
||||
os:
|
||||
group: ""
|
||||
user: ""
|
||||
rlimit_nofile: 0
|
||||
schema_version: 12
|
17
apps/adguard/docker-compose.yml
Normal file
17
apps/adguard/docker-compose.yml
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
version: "3.5"
|
||||
|
||||
services:
|
||||
adguardhome:
|
||||
image: adguard/adguardhome:v0.107.6
|
||||
container_name: adguard
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}/data/work:/opt/adguardhome/work"
|
||||
- "${APP_DATA_DIR}/data/conf:/opt/adguardhome/conf"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
||||
ports:
|
||||
- 53:53/tcp
|
||||
- 53:53/udp
|
||||
- ${APP_PORT}:80
|
12
apps/calibre-web/config.json
Normal file
12
apps/calibre-web/config.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"name": "Calibre-Web - EBook Reader",
|
||||
"available": true,
|
||||
"port": 8100,
|
||||
"id": "calibre-web",
|
||||
"description": "On the initial setup screen, enter /books as your calibre library location. \n Default admin login: Username: admin Password: admin123",
|
||||
"short_desc": "Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.",
|
||||
"author": "https://github.com/janeczku/",
|
||||
"source": "https://github.com/janeczku/calibre-web",
|
||||
"image": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png",
|
||||
"form_fields": {}
|
||||
}
|
BIN
apps/calibre-web/data/books/metadata.db
Normal file
BIN
apps/calibre-web/data/books/metadata.db
Normal file
Binary file not shown.
17
apps/calibre-web/docker-compose.yml
Normal file
17
apps/calibre-web/docker-compose.yml
Normal file
|
@ -0,0 +1,17 @@
|
|||
version: "2.1"
|
||||
services:
|
||||
calibre-web:
|
||||
image: lscr.io/linuxserver/calibre-web:latest
|
||||
container_name: calibre-web
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${APP_DATA_DIR}/data/books:/books
|
||||
ports:
|
||||
- ${APP_PORT}:8083
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
21
apps/code-server/config.json
Normal file
21
apps/code-server/config.json
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"name": "Code-Server - Web VS Code",
|
||||
"available": true,
|
||||
"port": 8101,
|
||||
"id": "code-server",
|
||||
"description": "",
|
||||
"short_desc": "Code-server is VS Code running on a remote server, accessible through the browser.",
|
||||
"author": "https://github.com/coder",
|
||||
"source": "https://github.com/linuxserver/docker-code-server",
|
||||
"image": "https://avatars.githubusercontent.com/u/95932066",
|
||||
"form_fields": {
|
||||
"password": {
|
||||
"type": "password",
|
||||
"label": "Password",
|
||||
"max": 50,
|
||||
"min": 3,
|
||||
"required": true,
|
||||
"env_variable": "CODESERVER_PASSWORD"
|
||||
}
|
||||
}
|
||||
}
|
19
apps/code-server/docker-compose.yml
Normal file
19
apps/code-server/docker-compose.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
version: "2.1"
|
||||
services:
|
||||
code-server:
|
||||
image: lscr.io/linuxserver/code-server:latest
|
||||
container_name: code-server
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- PASSWORD=${CODESERVER_PASSWORD}
|
||||
- DEFAULT_WORKSPACE=/config/workspace #optional
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config #config dir
|
||||
- ${APP_DATA_DIR}/data/projects:/projects
|
||||
ports:
|
||||
- ${APP_PORT}:8443
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- tipi_main_network
|
13
apps/homarr/config.json
Normal file
13
apps/homarr/config.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "Homarr",
|
||||
"available": true,
|
||||
"port": 8102,
|
||||
"id": "homarr",
|
||||
"description": "A homepage for your server.",
|
||||
"short_desc": "Homarr is a simple and lightweight homepage for your server, that helps you easily access all of your services in one place.",
|
||||
"author": "https://github.com/ajnart/",
|
||||
"source": "https://github.com/ajnart/homar",
|
||||
"website": "https://discord.gg/C2WTXkzkwK",
|
||||
"image": "https://raw.githubusercontent.com/ajnart/homarr/master/public/imgs/logo.png",
|
||||
"form_fields": {}
|
||||
}
|
12
apps/homarr/docker-compose.yml
Normal file
12
apps/homarr/docker-compose.yml
Normal file
|
@ -0,0 +1,12 @@
|
|||
version: '3'
|
||||
services:
|
||||
homarr:
|
||||
container_name: homarr
|
||||
image: ghcr.io/ajnart/homarr:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/app/data/configs
|
||||
ports:
|
||||
- ${APP_PORT}:7575
|
||||
networks:
|
||||
- tipi_main_network
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "runtipi",
|
||||
"version": "0.1.4",
|
||||
"version": "0.1.5",
|
||||
"description": "A homeserver for everyone",
|
||||
"scripts": {
|
||||
"prepare": "husky install",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "dashboard",
|
||||
"version": "0.1.4",
|
||||
"version": "0.1.5",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "system-api",
|
||||
"version": "0.1.4",
|
||||
"version": "0.1.5",
|
||||
"description": "",
|
||||
"exports": "./dist/server.js",
|
||||
"type": "module",
|
||||
|
|
|
@ -15,4 +15,7 @@ export const appNames = [
|
|||
'n8n',
|
||||
'invidious',
|
||||
'joplin',
|
||||
'homarr',
|
||||
'code-server',
|
||||
'calibre-web',
|
||||
];
|
||||
|
|
|
@ -65,7 +65,7 @@ const getMemoryInfo = async (req: Request, res: Response<MemoryData>) => {
|
|||
res.status(200).json(result);
|
||||
};
|
||||
|
||||
const getVersion = async (_: Request, res: Response<{ current: string; latest: string }>) => {
|
||||
const getVersion = async (req: Request, res: Response<{ current: string; latest: string }>) => {
|
||||
let version = TipiCache.get<string>('latestVersion');
|
||||
|
||||
if (!version) {
|
||||
|
|
|
@ -60,7 +60,8 @@ if [ -z ${2+x} ]; then
|
|||
exit 1
|
||||
else
|
||||
app="$2"
|
||||
root_folder_host="$3"
|
||||
root_folder_host="${3:-$ROOT_FOLDER}"
|
||||
|
||||
app_dir="${ROOT_FOLDER}/apps/${app}"
|
||||
app_data_dir="${ROOT_FOLDER}/app-data/${app}"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue