diff --git a/tubearchivist/.env.example b/tubearchivist/.env.example new file mode 100644 index 0000000..ff36d69 --- /dev/null +++ b/tubearchivist/.env.example @@ -0,0 +1,7 @@ +TAILSCALE_OAUTH_KEY= +TAILSCALE_TAGS= +TA_USERNAME= +TA_PASSWORD= +TA_ES_PASSWORD= +VIDEO_DATA_PATH= +TA_HOST= \ No newline at end of file diff --git a/tubearchivist/docker-compose.yml b/tubearchivist/docker-compose.yml new file mode 100644 index 0000000..0caeb39 --- /dev/null +++ b/tubearchivist/docker-compose.yml @@ -0,0 +1,84 @@ +--- +services: + ts-tubearchivist: + image: tailscale/tailscale:latest + container_name: ts-tubearchivist + hostname: tubearchivist + environment: + - TS_AUTHKEY=${TAILSCALE_OAUTH_KEY} + - TS_EXTRA_ARGS=--advertise-tags=${TAILSCALE_TAGS} + - TS_SERVE_CONFIG=/config/tubearchivist.json + - TS_STATE_DIR=/var/lib/tailscale + volumes: + - ts-tubearchivist-state:/var/lib/tailscale + - ${PWD}/ts-tubearchivist/config:/config + - /dev/net/tun:/dev/net/tun + cap_add: + - net_admin + - sys_module + restart: unless-stopped + + tubearchivist: + container_name: tubearchivist + restart: unless-stopped + image: bbilly1/tubearchivist +# ports: +# - 8000:8000 + volumes: + - ${VIDEO_DATA_PATH}:/youtube + - tubearchivist-cache:/cache + environment: + - ES_URL=http://archivist-es:9200 # needs protocol e.g. http and port + - REDIS_HOST=archivist-redis # don't add protocol + - HOST_UID=1000 + - HOST_GID=1000 + - TA_HOST=$TA_HOST # set your host name + - TA_USERNAME=$TA_USERNAME # your initial TA credentials + - TA_PASSWORD=$TA_PASSWORD # your initial TA credentials + - ELASTIC_PASSWORD=$TA_ES_PASSWORD # set password for Elasticsearch + - TZ=Europe/Lisbon # set your time zone + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 2m + timeout: 10s + retries: 3 + start_period: 30s + depends_on: + - archivist-es + - archivist-redis + + archivist-redis: + image: redis/redis-stack-server + container_name: archivist-redis + restart: unless-stopped + expose: + - "6379" + volumes: + - tubearchivist-redis:/data + depends_on: + - archivist-es + + archivist-es: + image: bbilly1/tubearchivist-es # only for amd64, or use official es 8.13.2 + container_name: archivist-es + restart: unless-stopped + environment: + - "ELASTIC_PASSWORD=$TA_ES_PASSWORD" # matching Elasticsearch password + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + - "xpack.security.enabled=true" + - "discovery.type=single-node" + - "path.repo=/usr/share/elasticsearch/data/snapshot" + ulimits: + memlock: + soft: -1 + hard: -1 + volumes: + - tubearchivist-es:/usr/share/elasticsearch/data # check for permission error when using bind mount, see readme + expose: + - "9200" + +volumes: + tubearchivist-es: + tubearchivist-cache: + tubearchivist-redis: + ts-tubearchivist-state: \ No newline at end of file diff --git a/tubearchivist/ts-tubearchivist/config/tubearchivist.json b/tubearchivist/ts-tubearchivist/config/tubearchivist.json new file mode 100644 index 0000000..1013528 --- /dev/null +++ b/tubearchivist/ts-tubearchivist/config/tubearchivist.json @@ -0,0 +1,20 @@ +{ + "TCP": { + "443": { + "HTTPS": true + } + }, + "Web": { + "${TS_CERT_DOMAIN}:443": { + "Handlers": { + "/": { + "Proxy": "http://tubearchivist:8000" + } + } + } + }, + "AllowFunnel": { + "${TS_CERT_DOMAIN}:443": false + } + } + \ No newline at end of file