Commit Graph
100 Commits
Author SHA1 Message Date
DmitryandClaude Sonnet 5 7031d7dbb3 feat: read-only service-registry to Proxmox drift gate
playbooks/validate.yml (make validate): reads pct config for every service in
homelab_services and fails if hostname, IP, cores, memory or swap disagree
with the registry. Read-only; meant as a pre/post gate around any inventory or
provisioning change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
2026-09-03 07:04:29 +03:00
DmitryandClaude Sonnet 5 646f2bbc8f feat(tofu): OpenTofu provisioning scaffold, auth modes and pilot notes
- providers.tf / variables.tf / versions.tf: bpg/proxmox ~> 0.84, endpoint and
  credentials from TF_VAR_* (set by the Makefile tofu-* targets from the
  repo-root .env). Two auth modes: root@pam by password (privileged: features
  beyond nesting, device passthrough, datastore mount points) or the
  ansible@pve token.
- README.md: pilot results on VMID 199 - what the token can and cannot do,
  why a root token still fails the literal `$authuser eq 'root@pam'` check,
  the cmode/console drift finding, and the chosen root@pam-by-password mode.
- pilot.tf.example: reference resource shape (features, device_passthrough,
  mount_point), not loaded (.example).
- .terraform.lock.hcl: pin the provider.

State has no backend yet; tofu/*.tfstate stays local and git-ignored.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
2026-09-03 07:04:23 +03:00
DmitryandClaude Sonnet 5 e0c53a1b1b chore: relocate .env to the repository root and refresh Make targets
.env is now consumed by both Ansible and OpenTofu, so keep a single copy at
the repo root instead of ansible/.env:

- rename ansible/.env.example -> .env.example.
- Makefile: ENV_FILE ?= $(REPO_ROOT)/.env (absolute, works from any cwd);
  REQUIRE_ENV/LOAD_ENV updated; help text.
- bootstrap-pve-api-token.yml / bootstrap-monitoring-pve-token.yml write and
  read ../../.env; bootstrap now keeps backup: true (it rewrites the whole
  file, clobbering MONITORING_*/EMERGENCY_*/PROXMOX_ROOT_PASSWORD).
- roles/pve_lxc, roles/monitoring_server: fail_msg points at the repo-root .env.

The Makefile also picks up the new targets added by later commits
(tofu-*, validate, pbs-storage, ru-vps-base, zerotier-decommission); they are
grouped here so all recipes land together.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
2026-09-03 07:04:12 +03:00
DmitryandClaude Sonnet 5 22394cbaba build: add OpenTofu to the dev shell and ignore its state
- flake.nix: add pkgs.opentofu to the devshell (LXC provisioning pilot).
- .gitignore: ignore tofu/.terraform/, *.tfstate*, *.tfplan and tofu/.env.
  The provider lock file (tofu/.terraform.lock.hcl) stays tracked on purpose:
  it pins the provider version.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
2026-09-03 07:03:52 +03:00
DmitryandClaude Opus 5 7700ed5a88 Sync documentation with the actual infrastructure
lint / yamllint + ansible-lint + syntax-check (push) Canceled after 0s
The host table listed 9 hosts against 16 in the inventory, the role tree
did not match roles/, and the documented setup path used a venv that no
longer works.

Describe the current entry points instead: nix develop, make, and the
ssh_config include that makes `ssh gitea` work by hand. Point at
`make docs` as the way to regenerate the host table rather than editing
it, since that is what drifted.

Also record what is deliberately incomplete: lxc_docker_host and
compose_service exist but are not wired into any playbook, and LXC
creation is still split between direct pct create over SSH and the
pve_lxc API role.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:10:38 +03:00
DmitryandClaude Opus 5 ef234b17f5 Add Makefile as the entry point for manual operation
Knowing how to run something required reading ansible/README.md and
remembering to source .env first. Provide `make help` instead, with
targets grouped by purpose and pattern rules for the repetitive families:
deploy-%, dry-%, update-% and play-%.

.env is sourced automatically; targets that need Proxmox credentials fail
with an actionable message when it is missing. Destructive targets --
mihomo-harden, which rotates live credentials, the frozen monitoring
stack, and update-all -- require CONFIRM=1.

The interpreter is resolved at runtime rather than hardcoded to .venv:
the repository's venv is currently broken, so the Makefile falls back to
whatever is on PATH, which is what the Nix devshell provides.

gen-inventory-docs.py prints the host and group tables from
ansible-inventory, so documentation can be regenerated instead of being
maintained by hand and drifting.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:10:29 +03:00
DmitryandClaude Opus 5 d535ef2d32 Add read-only infrastructure status playbook
One command to see the state of everything: reachability, uptime, disk
usage, service unit states, failed units, pct list on the Proxmox nodes,
OpenVPN transport health, and the last run of each backup job.

An unreachable host is reported as data, not as a run failure, so a
single host being down still produces a full summary. Every command is
changed_when: false with check_mode: false, so the playbook is read-only
and works under --check. Backup freshness is read from what systemd
already recorded rather than by invoking the audit scripts, which would
hit PBS and Yandex Disk and take locks.

Service units are derived from inventory groups where possible; only
app-specific units need the per-host map, and each was taken from the
playbook or role that installs it.

Verified against live infrastructure: 15 hosts, changed=0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:10:29 +03:00
DmitryandClaude Opus 5 9725d3ea7c Add service registry, shared roles and unified reverse proxy
Collect the facts about all 14 services -- VMID, node, address, ports,
domain, pinned images, resources, backup and monitoring participation --
into group_vars/all/services.yml. Values are taken from the existing
playbooks; gaps are marked null rather than invented.

Replace reverse-proxy-{gitea,vaultwarden,grimmory}.yml with a single
playbook iterating over registry entries that declare a domain. It keeps
every check the three had, preserves grimmory's richer Caddy block
byte-for-byte, and restarts Caddy once when any site changed instead of
up to three times. Verified with --check --diff against ru-vps: ok=6
changed=0, so it reproduces the current Caddyfile exactly.

Add two roles factoring out the skeleton duplicated across the pve-*
playbooks: lxc_docker_host (packages, /dev/fuse assertion, fuse-overlayfs
storage driver, UFW baseline) and compose_service (compose file, systemd
unit, config validation, health check). They are not wired into any
playbook yet -- migrating a live service is a separate, per-service step;
compose_service/README.md shows the Gitea example and spells out what
actually changes on the host.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:10:16 +03:00
DmitryandClaude Opus 5 ec3b736250 Move SSH transport to ssh_config and shared group_vars
hosts.yml repeated the same authentication block for 13 LXC hosts and
carried 13 byte-identical copies of the ru-vps ProxyCommand. Describe the
transport once in ansible/ssh_config instead: jump host, per-host users,
keys, and the fact that pbs and ovpn-mini are reached directly rather
than through ru-vps.

Ansible loads that file through ansible_ssh_common_args in
group_vars/all/main.yml, where the path is derived from inventory_dir so
it depends on neither the current directory nor the clone location.
The same file makes `ssh gitea` work from a plain terminal once
~/.ssh/config includes it.

hosts.yml drops from 209 to 137 lines and now holds only addresses and
per-host facts. Verified equivalent: ansible-inventory --list before and
after differ only by the removed ansible_ssh_common_args, with group
membership and ordering byte-identical.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:10:16 +03:00
DmitryandClaude Opus 5 a7b0635830 Add lint configuration and Gitea Actions CI
Configure yamllint and ansible-lint, plus a workflow running yamllint,
ansible-lint and ansible-playbook --syntax-check over every playbook.

ansible-lint uses the moderate profile: on the current code it reports
exactly the same violations as basic, so it costs nothing today while
holding a higher bar for new code. skip_list is empty; noisy legacy
rules go to warn_list with a comment on why and when to restore them.
Correctness and safety rules stay fatal.

Two constraints are encoded in the workflow: syntax-check must run from
ansible/ because roles_path is relative, and ansible-lint needs absolute
ANSIBLE_ROLES_PATH/ANSIBLE_COLLECTIONS_PATH when run from the root.

The runner is not registered yet; registration notes are in the workflow.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:09:59 +03:00
DmitryandClaude Opus 5 b953909e0a Add reproducible Nix dev environment
Replace the Python venv with a Nix devshell pinning ansible-core 2.21.3,
ansible-lint, yamllint and a Python with proxmoxer/requests. The Python
dependencies share the interpreter that runs ansible, so pve-*.yml plays
on implicit localhost can import proxmoxer without inventory changes.

The shellHook exports absolute ANSIBLE_CONFIG, ANSIBLE_INVENTORY,
ANSIBLE_ROLES_PATH and ANSIBLE_COLLECTIONS_PATH, so commands work from
the repository root as well as from ansible/.

Also un-ignore .envrc, which the global gitignore hides, and ignore the
stray .ansible/ runtime directory.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:09:59 +03:00
DmitryandClaude Opus 5 c676be81ec Capture current Ansible control plane state
Commit the accumulated infrastructure work that was living only in the
working tree: monitoring stack, emergency access/bot, gyro allocator,
grimmory, adguard, backup audit and the OpenCode agent definitions.

Also ignore Python bytecode, local archives and Nix/direnv artifacts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 21:39:28 +03:00
Dmitry 4bafa7d09e Archive Legacy Setup And Add Ansible Control Plane 2026-07-08 12:47:37 +03:00
Dmitry 841d56380b Update docker-compose.yml
Deploy mini-pc / deploy (push) Failing after 3s
2026-07-04 11:05:53 +03:00
Dmitry 827f8de6d3 Update docker-compose.yml
Deploy mini-pc / deploy (push) Failing after 3s
2026-07-04 10:56:33 +03:00
Dmitry 1a0b38d066 Update docker-compose.yml
Deploy mini-pc / deploy (push) Failing after 2s
2026-07-04 10:51:47 +03:00
Dmitry 046d3bc236 Update docker-compose.yml
Deploy mini-pc / deploy (push) Failing after 2s
2026-07-04 10:51:08 +03:00
Dmitry b2d6c9a436 Create docker-compose.yml
Deploy mini-pc / deploy (push) Failing after 3s
2026-07-04 10:49:36 +03:00
Dmitry f8ccc7ec35 Update Caddyfile
Deploy mini-pc / deploy (push) Successful in 32s
2026-06-10 21:10:44 +03:00
Dmitry c935564ed8 Update config.yaml
Deploy ru-vps / deploy (push) Successful in 23s
2026-06-09 06:32:49 +03:00
Dmitry 59a7749b18 Убрать всё, кроме mihomo
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 23:05:05 +03:00
Dmitry 74c3c54feb Update mtg-config.toml
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 23:02:45 +03:00
Dmitry e3d7c8ccbf Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 22:53:09 +03:00
Dmitry f153bcdbd1 Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 32s
2026-06-08 22:52:23 +03:00
Dmitry 6529b49e1f Update mtg-config.toml
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 22:51:41 +03:00
Dmitry 638f043a49 Update mtg-config.toml
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 22:46:30 +03:00
Dmitry 928878e057 dfddd
Deploy ru-vps / deploy (push) Successful in 33s
2026-06-08 22:37:16 +03:00
Dmitry 92ce67732c Update mtg-config.toml
Deploy ru-vps / deploy (push) Failing after 24s
2026-06-08 22:33:36 +03:00
Dmitry 41404085f5 mtg
Deploy ru-vps / deploy (push) Failing after 24s
2026-06-08 22:27:13 +03:00
Dmitry 0e96d60ece Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 24s
2026-06-08 21:59:29 +03:00
Dmitry 2e829d9380 fff
Deploy ru-vps / deploy (push) Failing after 1s
2026-06-08 20:46:26 +03:00
Dmitry 2cd106b84c Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 31s
2026-06-08 20:44:28 +03:00
Dmitry 46824776ef Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 9s
2026-06-08 20:43:16 +03:00
Dmitry d5b56f1a20 Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 20:39:22 +03:00
Dmitry 65ef3341a4 Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 59s
2026-06-08 20:35:57 +03:00
Dmitry db7c95845b Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 21s
2026-06-08 20:34:33 +03:00
Dmitry 5cf7f11b88 ыыы
Deploy ru-vps / deploy (push) Successful in 33s
2026-06-08 20:28:10 +03:00
Dmitry 857e63ca68 Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 9s
2026-06-08 20:21:06 +03:00
Dmitry 9c7ef29a43 Update config.yaml
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 20:19:40 +03:00
Dmitry 81174047bd Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 56s
2026-06-08 20:09:56 +03:00
Dmitry 17f91d833e Update config.yaml
Deploy ru-vps / deploy (push) Successful in 24s
2026-06-08 19:54:39 +03:00
Dmitry 32428d0156 Update config.yaml
Deploy ru-vps / deploy (push) Successful in 24s
2026-06-08 19:49:37 +03:00
Dmitry e49cf515e9 Убрать squid
Deploy ru-vps / deploy (push) Successful in 34s
2026-06-08 19:46:52 +03:00
Dmitry eb9c8767b0 Update config.yaml
Deploy ru-vps / deploy (push) Successful in 22s
2026-06-08 19:41:25 +03:00
Dmitry f61ad5763e Update config.yaml
Deploy ru-vps / deploy (push) Failing after 33s
2026-06-08 19:40:16 +03:00
Dmitry 3cca8246db Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 33s
2026-06-08 19:33:57 +03:00
Dmitry 573590ef45 Опять прокси новый
Deploy ru-vps / deploy (push) Successful in 24s
2026-06-08 19:31:18 +03:00
Dmitry 4a80762cbc Переосмысление сервисов
Deploy ru-vps / deploy (push) Successful in 29s
2026-06-08 19:22:42 +03:00
Dmitry f98b83514f Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 29s
2026-06-08 19:21:12 +03:00
Dmitry 055bb45be4 Sss
Deploy ru-vps / deploy (push) Failing after 1s
2026-06-08 19:18:03 +03:00
Dmitry 40a499decf Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 30s
2026-06-08 19:13:07 +03:00
Dmitry 14bf5c9e63 Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 43s
2026-06-08 19:08:15 +03:00
Dmitry ab9d07c379 Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 29s
2026-06-08 19:06:50 +03:00
Dmitry 39bdb810a2 Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 27s
2026-06-08 18:58:46 +03:00
Dmitry b3a17ab5e4 Update entrypoint.sh
Deploy ru-vps / deploy (push) Failing after 16s
2026-06-08 18:57:08 +03:00
Dmitry 322bfa9513 Добавить 3proxy к squid
Deploy ru-vps / deploy (push) Failing after 20s
2026-06-08 18:55:05 +03:00
Dmitry c0cd22a73a Update squid.conf
Deploy ru-vps / deploy (push) Successful in 43s
2026-06-08 18:50:54 +03:00
Dmitry 744aa4f14a Добавитьь ui в mihomo
Deploy ru-vps / deploy (push) Successful in 44s
2026-06-08 18:48:48 +03:00
Dmitry 2a9ac8cbfd Переименования
Deploy ru-vps / deploy (push) Failing after 43s
2026-06-08 18:46:36 +03:00
Dmitry 70f6d6c51f Create config.yml
Deploy ru-vps / deploy (push) Successful in 44s
2026-06-08 18:45:53 +03:00
Dmitry e9d39360b3 Перенос конфига для mihomo
Deploy ru-vps / deploy (push) Successful in 43s
2026-06-08 18:44:57 +03:00
Dmitry 87557bee15 Добавить mihomo
Deploy ru-vps / deploy (push) Successful in 44s
2026-06-08 18:41:37 +03:00
Dmitry abd88f5744 Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 36s
2026-06-07 10:51:49 +03:00
Dmitry aea97a1d2a Запинить версию v2raya до 2.1.3
Deploy ru-vps / deploy (push) Successful in 38s
2026-06-07 10:48:06 +03:00
Dmitry d1ae1afe34 Включить v2raya
Deploy ru-vps / deploy (push) Successful in 37s
2026-06-07 10:46:11 +03:00
Dmitry f369bf2eaf Вернуть v2raya
Deploy ru-vps / deploy (push) Successful in 29s
2026-06-07 10:44:57 +03:00
Dmitry 05a95ae3c0 Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 48s
2026-06-07 10:43:24 +03:00
Dmitry e37db8dd7a Убрать v2raya, добавить mihomo
Deploy ru-vps / deploy (push) Failing after 10s
2026-06-07 10:40:48 +03:00
Dmitry 1bd13b2c1b Update squid.conf
Deploy ru-vps / deploy (push) Failing after 21s
2026-06-07 09:50:39 +03:00
Dmitry 35fce0220c Исправление конфигов squid
Deploy ru-vps / deploy (push) Failing after 20s
2026-06-07 09:40:33 +03:00
Dmitry d5b589abf8 Update docker-compose.yml
Deploy ru-vps / deploy (push) Successful in 36s
2026-06-07 09:36:42 +03:00
Dmitry 1548c1f524 Исправить путь в конфиге squid
Deploy ru-vps / deploy (push) Successful in 43s
2026-06-07 09:30:43 +03:00
Dmitry 05c38bb63f Добавить squid.proxy
Deploy ru-vps / deploy (push) Successful in 46s
2026-06-07 09:25:05 +03:00
Dmitry 7b1c637a76 Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 30s
2026-06-07 09:12:40 +03:00
Dmitry fe2fe590e4 Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 17s
2026-06-07 09:11:05 +03:00
Dmitry 860f09e8f8 Update docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 30s
2026-06-07 09:10:11 +03:00
Dmitry 0a38cf4237 Create docker-compose.yml
Deploy ru-vps / deploy (push) Failing after 36s
2026-06-07 09:06:02 +03:00
Dmitry ce7654908c Убрать syncthing
Deploy cloud-pc / deploy (push) Successful in 34s
2026-06-03 16:56:52 +03:00
Dmitry 185f7a52a1 Remove telegram bot api service
Deploy mini-pc / deploy (push) Successful in 33s
NixOS switch mini-pc / switch (push) Successful in 9s
2026-05-31 15:15:56 +03:00
Dmitry 8dbca5368d Use host networking for telegram bot API
Deploy mini-pc / deploy (push) Successful in 40s
2026-05-31 15:10:07 +03:00
Dmitry df9f965f38 Update docker-compose.yml
Deploy mini-pc / deploy (push) Successful in 39s
2026-05-31 14:56:43 +03:00
Dmitry cb401219e8 Update docker-compose.yml
Deploy mini-pc / deploy (push) Successful in 39s
2026-05-31 14:52:30 +03:00
Dmitry 16aa567053 Update Telegram Bot API proxy port
Deploy mini-pc / deploy (push) Successful in 39s
2026-05-31 14:41:27 +03:00
Dmitry 6c95ad59a7 Add Telegram Bot API service to mini-pc
Deploy mini-pc / deploy (push) Failing after 14s
NixOS switch mini-pc / switch (push) Successful in 12s
2026-05-31 14:20:24 +03:00
Dmitry c21e2b175c Remove Maddy relay from mini-pc
Deploy mini-pc / deploy (push) Successful in 40s
NixOS switch mini-pc / switch (push) Successful in 10s
2026-05-31 12:39:04 +03:00
Dmitry 649dd5a076 Update maddy.conf
Deploy mini-pc / deploy (push) Failing after 39s
2026-05-31 12:27:27 +03:00
Dmitry 5168b22eba Refactor Maddy relay delivery queue
Deploy mini-pc / deploy (push) Failing after 40s
2026-05-31 12:20:53 +03:00
Dmitry 5ef1d4830e Configure Maddy for Yandex SMTP relay
Deploy mini-pc / deploy (push) Successful in 39s
2026-05-31 12:17:28 +03:00
Dmitry 9b47d7a216 Update maddy.conf
Deploy mini-pc / deploy (push) Successful in 39s
2026-05-31 12:11:09 +03:00
Dmitry 340802ec1a Delay Caddy Until Certs Are Ready
Deploy mini-pc / deploy (push) Successful in 49s
2026-05-31 11:38:53 +03:00
Dmitry 4cfc9597b4 Update mail sender defaults
Deploy cloud-pc / deploy (push) Successful in 44s
Deploy mini-pc / deploy (push) Failing after 1m17s
2026-05-31 11:24:45 +03:00
Dmitry bf6aa03fcb Restrict Maddy Relay Sender
Deploy mini-pc / deploy (push) Failing after 40s
2026-05-30 20:38:15 +03:00
Dmitry ae9ca5d07f Enable Vaultwarden SMTP on mini-pc
Deploy mini-pc / deploy (push) Failing after 45s
NixOS switch mini-pc / switch (push) Successful in 12s
Expose Maddy on port 2525 and connect
Vaultwarden and Uptime Kuma to the mail
network for outbound mail delivery.
2026-05-30 20:28:08 +03:00
Dmitry 2b1d98292b Update maddy.conf
Deploy mini-pc / deploy (push) Failing after 39s
2026-05-30 20:23:56 +03:00
Dmitry fb5003ef0c Add Maddy relay on mini-pc
Deploy mini-pc / deploy (push) Failing after 14s
Deploy cloud-pc / deploy (push) Failing after 34s
2026-05-30 20:20:54 +03:00
Dmitry 6742f89420 Update docker-compose.yml
Deploy cloud-pc / deploy (push) Failing after 27s
2026-05-30 17:36:08 +03:00
Dmitry 54b4a23446 Extract Shared NixOS Settings
NixOS switch mini-pc / switch (push) Successful in 14s
Deploy cloud-pc / deploy (push) Failing after 29s
NixOS switch cloud-pc / switch (push) Successful in 11s
2026-05-30 17:25:18 +03:00
Dmitry 2e0b494000 Update base.nix
NixOS switch mini-pc / switch (push) Successful in 31s
NixOS switch cloud-pc / switch (push) Successful in 33s
2026-05-30 15:24:09 +03:00
Dmitry 4057d5d7f1 Update Caddyfile
Deploy ru-vps / deploy (push) Successful in 24s
2026-05-30 15:16:14 +03:00
Dmitry 037372d500 Set Nix daemon proxy environment
NixOS switch cloud-pc / switch (push) Successful in 14s
NixOS switch mini-pc / switch (push) Successful in 13s
2026-05-30 15:07:08 +03:00