zlambda: APISIX NixOS oci-containers로 재가동
- apisix + etcd 컨테이너 기동 완료 (라우트/SSL 빈 상태) - NixOS 모듈 apisix.nix로 선언형 관리 - netbis.md에 부트스트랩 체크리스트 추가
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Netbis 예비서버 ([[zlambda]])
|
||||
updated: 2026-04-08 NixOS 전환으로 APISIX 미가동
|
||||
updated: 2026-04-08 APISIX NixOS oci-containers로 재가동
|
||||
aliases: [netbis-sandbox-tokyo]
|
||||
tags: [netbis, apisix, dr, cloudflare, nixos]
|
||||
---
|
||||
@@ -11,7 +11,7 @@ Netbis 팀 도메인의 예비(DR) 리버스 프록시 서버. 평소에는 트
|
||||
|
||||
기존 Ironclad 인프라([[apisix]], [[crowdsec-safeline]])와는 별도 구성.
|
||||
|
||||
> **2026-04-08 상태**: 호스트 OS를 Debian 12 → **NixOS 25.05**로 교체하면서 APISIX/etcd 컨테이너가 모두 제거됨. 호스트 이름도 `sandbox-tokyo` → `zlambda`로 통일. 현재 베이스 시스템(sshd + tailscaled + docker)만 떠 있고 **DR 역할은 미가동**. 재가동하려면 docker compose로 APISIX/etcd 재배포 필요. NixOS configuration은 Gitea [[zlambda|kaffa/nixos-infra]] flake에서 관리.
|
||||
> **2026-04-08 상태**: Debian 12 → **NixOS 25.05** 전환 후 APISIX/etcd를 NixOS `virtualisation.oci-containers`로 재선언하여 기동 완료. 설정은 [[zlambda|kaffa/nixos-infra]] flake의 `apisix.nix` 모듈에 있음. 컨테이너는 구동되지만 **라우트/SSL은 비어 있으므로 DR 역할 부트스트랩은 별도 작업** (acme.sh 재발급 → admin API로 라우트/업스트림/SSL 등록).
|
||||
|
||||
## 서버 정보
|
||||
|
||||
@@ -30,16 +30,23 @@ Netbis 팀 도메인의 예비(DR) 리버스 프록시 서버. 평소에는 트
|
||||
|
||||
## APISIX 구성
|
||||
|
||||
Docker Compose (/opt/apisix/)로 배포.
|
||||
NixOS `virtualisation.oci-containers`로 선언 — `~/nixos-infra/apisix.nix`. 재배포는 `nixos-rebuild switch --flake .#zlambda`.
|
||||
|
||||
| 컨테이너 | 이미지 | 포트 |
|
||||
|----------|--------|------|
|
||||
| apisix | apache/apisix:3.15.0-debian | 80(→9080), 443(→9443), 9180 |
|
||||
| apisix-etcd | gcr.io/etcd-development/etcd:v3.5.11 | 2379 (내부) |
|
||||
| apisix-etcd | quay.io/coreos/etcd:v3.5.11 | 2379 (내부) |
|
||||
|
||||
- Admin API: `http://127.0.0.1:9180` (0.0.0.0/0 허용)
|
||||
- Docker 네트워크: `apisix-net` (172.22.222.0/24), etcd=172.22.222.3, apisix=172.22.222.20
|
||||
- Admin API: `http://127.0.0.1:9180` (admin key 필수, Linode 방화벽이 public 차단 → Tailscale 경유)
|
||||
- Admin Key: `edd1c9f034335f136f87ad84b625c8f1`
|
||||
- APISIX 컨테이너 ulimits: nofile 655360
|
||||
- 영속 데이터:
|
||||
- etcd: bind mount `/var/lib/apisix/etcd` (root 소유)
|
||||
- apisix 로그: docker named volume `apisix-logs` (이미지 VOLUME 선언이 uid 1001 권한 세팅)
|
||||
- config.yaml은 Nix store에서 생성되어 read-only bind mount (변경 시 rebuild)
|
||||
- systemd 의존: `init-apisix-net.service`(oneshot) → `docker-apisix-etcd.service` → `docker-apisix.service`
|
||||
- 플러그인: real-ip, cors, ip-restriction, proxy-rewrite, response-rewrite, redirect, limit-*, prometheus, http-logger, file-logger 등 (config.yaml 참조). **crowdsec-bouncer 플러그인은 미포함** (커스텀 lua 이전 필요 시 별도 작업).
|
||||
|
||||
### global_rules
|
||||
|
||||
@@ -236,8 +243,8 @@ Workers Paid에 포함. CrowdSec Worker Bouncer 요청 로그를 R2에 저장
|
||||
|
||||
## 이전에 운영했던 서비스 (제거됨)
|
||||
|
||||
sandbox-tokyo에서 기존 운영하던 아래 서비스는 2026-04-03 중지, 2026-04-08 NixOS 전환으로 완전 제거:
|
||||
- APISIX 3.15.0 + apisix-etcd (Docker Compose)
|
||||
sandbox-tokyo에서 기존 운영하던 아래 서비스는 2026-04-03 중지, 2026-04-08 NixOS 전환으로 제거:
|
||||
- ~~APISIX 3.15.0 + apisix-etcd (Docker Compose)~~ → **2026-04-08 NixOS oci-containers로 재가동**
|
||||
- vault-prod (HashiCorp Vault)
|
||||
- wg-easy (WireGuard VPN)
|
||||
- nginx-tcp-proxy
|
||||
@@ -245,4 +252,18 @@ sandbox-tokyo에서 기존 운영하던 아래 서비스는 2026-04-03 중지, 2
|
||||
- tlsproxy
|
||||
- Caddy (systemd, disabled)
|
||||
|
||||
재구성 시 참고: NixOS 위에 Docker는 이미 설치돼 있으므로 docker compose 디렉토리만 다시 만들면 됨.
|
||||
재구성 시 참고: NixOS 모듈로 선언하는 패턴은 `apisix.nix` 참조. 간단한 외부 이미지 컨테이너는 `virtualisation.oci-containers.containers.<name>` 블록 하나 + 필요 시 docker network 생성용 systemd oneshot만 있으면 된다.
|
||||
|
||||
## 부트스트랩 체크리스트 (재가동 시)
|
||||
|
||||
DR 활성화 전에 필요한 작업:
|
||||
|
||||
- [ ] Linode 방화벽/네트워크: Cloudflare IP 대역이 80/443에 도달하는지 확인
|
||||
- [ ] acme.sh 재설치 (NixOS 환경에서 `services.acme` 또는 docker로 별도 실행). 기존 cert 경로 `/root/.acme.sh/{domain}_ecc/`는 삭제됨
|
||||
- [ ] 6개 도메인 × wildcard cert 재발급 (ZeroSSL, Cloudflare DNS-01)
|
||||
- [ ] admin API로 11개 라우트 + 업스트림 + SSL 등록 (위 "라우트 및 업스트림" 표 참고)
|
||||
- [ ] global_rules: real-ip(Cloudflare IPs) + http-logger(CrowdSec jp1 10.253.100.240)
|
||||
- [ ] CrowdSec LAPI 키 재확인 — netbis 전용 바운서용 (vault에 저장)
|
||||
- [ ] Cloudflare DNS 전환 (각 zone A 레코드 → 139.162.71.52)
|
||||
|
||||
crowdsec-bouncer 플러그인이 필요하면 osaka에서 `crowdsec-bouncer.lua` 파일 가져와 apisix.nix 볼륨에 추가하고 config.yaml plugins에 등록.
|
||||
|
||||
Reference in New Issue
Block a user