Container images for the Tangled Knot and Spindle servers

add compose file and task to run services

psychedeli.ca 3c23d162 a5c36442

verified
0/0
Waiting for spindle ...
Changed files
+65 -2
+7 -2
.env.yaml
··· 1 1 DOCKER_USER: ENC[AES256_GCM,data:eg6enZA=,iv:Zx73u8oHotkMPbnm/gdT+3V/6hSuJx2/3os9M2ls0k8=,tag:d4Tz73i/CGAURCKXP7d/Yw==,type:str] 2 2 DOCKER_TOKEN: ENC[AES256_GCM,data:xnGW4Hw3rBmtnB1+wAbej8bXidP6FuhhwFGKgpx4WrPT6ogP,iv:pHWBn/lMjgqmQxlKgUdIRexhm5LBPXkn22D2SJD9xb0=,tag:KvZzTPWLFDDniPupFhq8Yg==,type:str] 3 + KNOT_SERVER_HOSTNAME: ENC[AES256_GCM,data:xyRDW6QThNuXj1mXIL0xPGM3,iv:UlGD2vG/U+23KVsQYpOn4kjsx8a/Y/vDXr2FUvLcyVg=,tag:L/pG9XcbP0sBfQfTUNUAtA==,type:str] 4 + KNOT_SERVER_OWNER: ENC[AES256_GCM,data:wFbHTDCs+lRbOABGnx2l0cdy5B392t21iKZED6oLkwE=,iv:VP0a7l0DWi3k0+bd8PJMiA4V8X6HQABP45T1eO+v42c=,tag:vejsQDOl89/tLOplioTF8g==,type:str] 5 + SPINDLE_SERVER_HOSTNAME: ENC[AES256_GCM,data:H3F78ApdXkkFxfs/fes9CF5q,iv:PqdklQul4wQAakj2oXdPm0L6qPxr/oyvqp2tp8S/CR0=,tag:09RqxAA7WhsEMgXjhBYzJw==,type:str] 6 + SPINDLE_SERVER_OWNER: ENC[AES256_GCM,data:uszll56Z0eBfSpDuvfgMrb3mu1yOZI+WY1wwCBTGVow=,iv:T2nvpm9DJCcGmyxi5CREUA8uhCpHJ98RILtSTmKoDe8=,tag:6Vln4+FQAxyUkI+v9wo8Cw==,type:str] 7 + CADDY_EMAIL: ENC[AES256_GCM,data:7/JJPvOmBAo5DYvLAoJLX4j2ZHJuWBRuPaZ/9VxQ5i8=,iv:SR7QnY7BPdo4XoPgL0PEXpm8jomvTXHz8GnLf5/PWyY=,tag:MOndV6f9DjO/4IbaVjqhpg==,type:str] 3 8 sops: 4 9 age: 5 10 - recipient: age1tw3hs5xhr28dq2dklfptftf0rl322cl9p9pe9yjrkkt4md2gtays772qjt ··· 11 16 cjA3NXZOQUhwc01EVmdPdjYxd2FkTVUKSvzexBtylIyQCUPVBqThkL0yah37T9/I 12 17 RDPl3vsdvcMpN0TKCVwn7P3W+7vciT86wq+6haG1fT1AFqAXCEDaiQ== 13 18 -----END AGE ENCRYPTED FILE----- 14 - lastmodified: "2025-11-21T11:54:33Z" 15 - mac: ENC[AES256_GCM,data:/VodMi4mmtc/TJn37PkyaQs6SYy6pQmfQbA6wvV2Uk+mWLuMT7rYc5D1a41eQfCzV0MDcp2TadUeX5R49BLOgMcmbW9bNXk8QwESpFiT1bPviV3+NpSooZiXING36NOFP4UxsNYJI1zyqC6p5fX6P83Df097WrJfv07+2HaSh8g=,iv:EkNWQeS+Nwi2SIiDL8AazmSxNFJGvgRxuf0NfazrH0g=,tag:oPH3gOe2l2c6dA1sMHE30g==,type:str] 19 + lastmodified: "2025-11-21T12:59:06Z" 20 + mac: ENC[AES256_GCM,data:rY3LACsar6udfC7FIGCJY87rDC+SY6JbNLLKcGBG5kLaH9gIqwHALwC1+VcfGJ5RyPYQdx7+agk4zhLifdWO7vKpk8DzAm1Xt3eMOJIiLKVUGM+Ny9JnzVsyYYkGYTnbreN1eTGGfOCs7sTfQ1H0yjNOemYTy1bMTzhsYa/cya4=,iv:zP5yJZX8b+5bIRSzpp/WXuM5u9j4aw6Rw5UcYx/1lIA=,tag:9IFLjTw4xFgdM2xg3E7sPQ==,type:str] 16 21 unencrypted_suffix: _unencrypted 17 22 version: 3.10.2
+54
compose.yml
··· 1 + name: tangled 2 + services: 3 + knot: 4 + image: tubbo/knot:latest 5 + restart: always 6 + build: 7 + target: knot 8 + ports: 9 + - 2222:22 10 + environment: 11 + - KNOT_SERVER_HOSTNAME 12 + - KNOT_SERVER_OWNER 13 + volumes: 14 + - knot_repos:/home/git/repositories 15 + - knot_data:/var/lib/tangled 16 + - knot_keys:/etc/ssh/keys 17 + spindle: 18 + image: tubbo/spindle:latest 19 + restart: always 20 + build: 21 + target: spindle 22 + environment: 23 + - SPINDLE_SERVER_HOSTNAME 24 + - SPINDLE_SERVER_OWNER 25 + volumes: 26 + - spindle_logs:/var/log/spindle 27 + - spindle_data:/var/lib/tangled 28 + caddy: 29 + image: caddy:2 30 + restart: always 31 + ports: 32 + - 443:443 33 + - 443:443/udp 34 + - 80:80 35 + configs: 36 + - source: caddyfile 37 + target: /etc/caddy/Caddyfile 38 + volumes: 39 + - caddy_data:/data 40 + volumes: 41 + knot_repos: 42 + knot_data: 43 + knot_keys: 44 + spindle_logs: 45 + spindle_data: 46 + caddy_data: 47 + configs: 48 + caddyfile: 49 + content: | 50 + { 51 + email ${CADDY_EMAIL} 52 + } 53 + ${KNOT_SERVER_HOSTNAME} { reverse_proxy http://knot:5555 } 54 + ${SPINDLE_SERVER_HOSTNAME} { reverse_proxy http://spindle:6555 }
+4
mise.toml
··· 19 19 "echo $DOCKER_TOKEN | docker login -u $DOCKER_USER --password-stdin", 20 20 { task = "build --push" } 21 21 ] 22 + 23 + [tasks.start] 24 + description = "Run container services" 25 + run = "docker compose up"