timothykim
e86b7bc58f
add hantim.net
Deploy hantim.net / deploy (push) Failing after 1s
Deploy nginx / deploy (push) Failing after 1s
2026-03-16 18:16:37 -04:00
timothykim
f4771cccf6
remove hantim.net
Deploy nginx / deploy (push) Successful in 3s
2026-03-16 18:16:01 -04:00
timothykim
d12ee0271e
add hantim.net
Deploy hantim.net / deploy (push) Failing after 1s
Deploy nginx / deploy (push) Failing after 1s
2026-03-16 18:13:27 -04:00
timothykim
fad1b3ab59
remove hantim.net
Deploy nginx / deploy (push) Successful in 2s
2026-03-16 18:12:29 -04:00
timothykim
8a30405d18
add hantim.net
Deploy hantim.net / deploy (push) Failing after 1s
Deploy nginx / deploy (push) Failing after 1s
2026-03-16 18:09:23 -04:00
timothykim
544fb9c13f
remove hantim.net
Deploy nginx / deploy (push) Successful in 3s
2026-03-16 18:07:10 -04:00
timothykim
4f3de1a030
add hantim.net
Deploy hantim.net / deploy (push) Failing after 1s
Deploy nginx / deploy (push) Failing after 1s
2026-03-16 02:19:14 -04:00
timothykim
f77fc12ab0
remove hantim.net
Deploy nginx / deploy (push) Successful in 3s
2026-03-16 02:17:45 -04:00
timothykim
b69b4b6dc5
add hantim.net
Deploy hantim.net / deploy (push) Failing after 2s
Deploy nginx / deploy (push) Failing after 2s
2026-03-16 02:09:10 -04:00
timothykim
9a950524eb
add cert command to deploy.sh, use deploy user for cert issuance
...
- deploy.sh: add cert-<domain> command for zero-downtime SSL issuance
- new-app.sh: SSH as deploy user with key from Bitwarden instead of personal user
- remove DEPLOY_USER/DEPLOY_HOST env var requirements
- update all docs to reflect new flow
2026-03-16 02:05:18 -04:00
timothykim
b51fe596c6
automate new-app.sh: DNS, cert, commit, build, verify
...
- resolve server IP from hantim.net instead of env var
- create Vultr DNS zone and A records via API
- wait for DNS propagation before cert issuance
- issue SSL cert via webroot (zero downtime)
- auto commit and push hantim-server
- trigger initial app build via Gitea API
- verify site is live with curl check
- update all docs to reflect single-command flow
2026-03-16 01:57:10 -04:00
timothykim
796a0003c7
open firewall ports for HTTP/HTTPS in setup.sh
2026-03-16 01:09:09 -04:00
timothykim
5c38b0631a
replace NPM with vanilla nginx + certbot
...
Deploy nginx / deploy (push) Failing after 3s
Deploy timothykim.net / deploy (push) Successful in 3s
- nginx:alpine replaces nginx-proxy-manager
- certbot on host with standalone issuance and auto-renewal
- per-site nginx configs in conf.d/ (HTTP->HTTPS, bare->www)
- container names use underscores (timothykim_net)
- setup.sh: automated cert issuance, dynamic app startup
- deploy.sh: nginx -t guard, graceful image-not-found
- new-app.sh: Gitea API repo creation, nginx conf generation
- add ARCHITECTURE.md, USECASES.md, CLAUDE.md
- remove old NPM data/certs from tracking
2026-03-16 00:55:13 -04:00
timothykim
31c6235726
rename timothykim container to timothykim-static
Deploy timothykim.net / deploy (push) Successful in 2s
2026-03-15 23:05:26 -04:00
timothykim
bef793aab7
fix: use bw get notes for registry token (secure note, not login)
2026-03-15 23:00:46 -04:00
timothykim
9337045114
automate deploy key and registry login via Bitwarden in setup.sh
2026-03-15 22:56:11 -04:00
timothykim
91d549c9ba
rename REGISTRY_TOKEN to CI_REGISTRY_TOKEN
2026-03-15 22:00:37 -04:00
timothykim
b96e94afa6
use vars.DEPLOY_HOST instead of secrets since hostname is not sensitive
2026-03-15 21:49:29 -04:00
timothykim
5dd2343d4a
migrate to hantim org and consolidate deploy secret name
...
Deploy timothykim.net / deploy (push) Failing after 3s
- Update all references from timothykim/ to hantim/ org
- Rename DEPLOY_KEY to DEPLOY_SSH_KEY everywhere
- Update README to reference org-level secrets
2026-03-15 21:46:31 -04:00
timothykim
6d8e89e82d
test deploy: rename nginx container
Deploy nginx / deploy (push) Successful in 7s
2026-03-13 17:16:10 -04:00
timothykim
f74fd0f55e
test deploy: rename timothykim container
Deploy timothykim.net / deploy (push) Successful in 3s
2026-03-13 17:15:29 -04:00
timothykim
5b3e66f4e0
fix deploy command to match directory name timothykim.net
2026-03-13 17:15:06 -04:00
timothykim
c1b2f40a7c
rename timothykim container back to timothykim-static
Deploy timothykim.net / deploy (push) Failing after 1s
2026-03-13 17:13:29 -04:00
timothykim
33040a487b
pass SSH_ORIGINAL_COMMAND as argument to deploy.sh in authorized_keys
...
sudo strips environment variables, so SSH_ORIGINAL_COMMAND wasn't
reaching deploy.sh. Pass it explicitly as a shell argument instead.
2026-03-13 17:12:30 -04:00
timothykim
21974656cd
rename timothykim container
Deploy timothykim.net / deploy (push) Failing after 1s
2026-03-13 17:11:12 -04:00
timothykim
eff589c3de
switch deploy workflows from appleboy/ssh-action to raw ssh
...
appleboy/ssh-action's script parameter doesn't set
SSH_ORIGINAL_COMMAND, which deploy.sh needs. Using raw ssh
with the command as an argument works correctly.
2026-03-13 17:10:37 -04:00
timothykim
c9fed26503
rename nginx container back to nginx-proxy-manager
Deploy nginx / deploy (push) Failing after 2s
2026-03-13 17:09:11 -04:00
timothykim
c484109f1c
merge dispatch and deploy into a single deploy.sh
...
deploy.sh reads SSH_ORIGINAL_COMMAND directly, validates it, and
runs the deploy. No more dispatch indirection.
2026-03-13 17:08:19 -04:00
timothykim
f1d4508411
update container names for nginx and timothykim.net
Deploy nginx / deploy (push) Failing after 2s
Deploy timothykim.net / deploy (push) Failing after 2s
2026-03-13 17:02:26 -04:00
timothykim
7d5f0920b7
replace per-app deploy scripts with generic deploy.sh
...
Dispatch now validates the command format and routes to a single
deploy.sh that handles any app. This fixes first-deploy failures
for new apps (dispatch no longer needs a static case list) and
simplifies new-app.sh (no deploy script or dispatch update needed).
Also adds input validation to new-app.sh, set -euo pipefail to
deploy scripts, and dnf module reset before nodejs install.
2026-03-13 17:00:59 -04:00
timothykim
587b671e61
add container_name to nginx compose
Deploy nginx / deploy (push) Successful in 7s
2026-03-13 16:04:18 -04:00
timothykim
2d793e787c
remove container_name from timothykim.net compose
Deploy timothykim.net / deploy (push) Successful in 4s
2026-03-13 16:00:30 -04:00
timothykim
a3cb7680f3
use sudo for deploy scripts instead of chown on repo
...
The deploy user runs scripts as root via passwordless sudo,
avoiding ownership conflicts with Docker-mounted volumes.
2026-03-13 15:58:42 -04:00
timothykim
e53ac6324a
add container_name to timothykim.net compose
Deploy timothykim.net / deploy (push) Failing after 2s
2026-03-13 15:52:03 -04:00
timothykim
79615c6295
fix execute permission on setup.sh
2026-03-13 15:50:25 -04:00
timothykim
21162432b9
fix execute permissions on deploy scripts
2026-03-13 15:50:10 -04:00
timothykim
5fea868a57
revert container_name change for clean deploy test
Deploy timothykim.net / deploy (push) Failing after 3s
2026-03-13 15:47:28 -04:00
timothykim
4467a6b2c4
add /opt/hantim as git safe.directory for deploy user
2026-03-13 15:45:31 -04:00
timothykim
7a1434c465
add container_name to timothykim.net compose
Deploy timothykim.net / deploy (push) Failing after 2s
2026-03-13 15:42:19 -04:00
timothykim
c528573b49
use full path for bw CLI since /usr/local/bin may not be in PATH
2026-03-13 14:54:41 -04:00
timothykim
d3d93a61b7
move git checkout before git-crypt unlock
...
git-crypt refuses to unlock if the working directory is dirty.
2026-03-13 13:12:08 -04:00
timothykim
9fdee2e54b
restore git-tracked files before starting services
...
Protects against a previous failed run where services started with
encrypted/missing files and overwrote them (e.g. NPM database).
2026-03-13 13:10:34 -04:00
timothykim
93b940fd76
add bw sync before fetching git-crypt key
2026-03-13 13:03:02 -04:00
timothykim
bb371a53c4
add dnf upgrade at start of setup to update system packages
2026-03-13 12:45:27 -04:00
timothykim
4fea2e7510
use nodejs:20 module stream instead of default nodejs 16
...
The default npm/nodejs on Rocky 9 is v16 which is too old for the
Bitwarden CLI (WASM/getrandom crash).
2026-03-13 12:43:59 -04:00
timothykim
c8976e0a22
always run git-crypt unlock instead of trying to detect lock state
2026-03-13 12:29:01 -04:00
timothykim
bb45d3ef2f
fix git-crypt unlock detection
...
Check for .git/git-crypt/keys directory which only exists after
unlock, instead of parsing git-crypt status output which shows
"encrypted:" regardless of lock state.
2026-03-13 12:25:18 -04:00
timothykim
c484cb9d49
fix git-crypt status check and remove pre-created docker network
...
git-crypt status outputs " encrypted:" not "***ENCRYPTED***".
The shared docker network is created by nginx's compose file, so
pre-creating it caused a label mismatch that prevented containers
from starting.
2026-03-13 12:23:20 -04:00
timothykim
b89ab5f36e
make setup.sh idempotent so it can be safely re-run
2026-03-13 12:19:24 -04:00
timothykim
e87473e303
use bash to invoke setup.sh since it's not executable after clone
2026-03-13 12:14:00 -04:00