اجرای محیط تمرینی
دریافت مثال، ساخت راز محلی، اجرای سه سرویس و بررسی نتیجه.
ابتدا نصب Docker را تمام کنید. فرمانهای زیر را روی سرور تمرینی و هر بار با همان کاربر اجرا کنید. پوشهٔ پروژه را نگه دارید؛ مسیرهای نسبی اتصال فایل از همین پوشه محاسبه میشوند.
دریافت و بررسی
بسته شامل فایل Compose، صفحهٔ HTML، تنظیمات مسیریابی و متریک، راهنما است و اطلاعات ورود ندارد. چکسام خرابی یا ناهماهنگی دانلود را تشخیص میدهد، اما امضای مستقل نیست. اگر بررسی ناموفق بود ادامه ندهید. پیش از اجرا compose.yaml و README.md را بخوانید.
این بسته دو Dockerfile هم دارد. فرمان docker compose build web backup پیش از شروع تمرین، ایمیج وب با اصلاح امنیتی و ابزار پشتیبانگیری آفلاین را میسازد. ساخت اولیه کد منبع و وابستگیها را دریافت میکند و ممکن است چند دقیقه طول بکشد. این ایمیجها برای تمریناند؛ محدودهٔ کاربرد و مجوز آنها در README بسته توضیح داده شده است.
mkdir -p ~/homelab-practice
cd ~/homelab-practice
curl -fSLO https://qazizada.de/downloads/homelab-starter.tar.gz
curl -fSLO https://qazizada.de/downloads/homelab-starter.tar.gz.sha256
sha256sum -c homelab-starter.tar.gz.sha256
tar -tzf homelab-starter.tar.gz
tar -xzf homelab-starter.tar.gz
mkdir -p secrets restore
chmod 700 secrets
# Run only when the password file does not exist.
(umask 077; set -C; openssl rand -hex 32 > secrets/restic-password)
sudo docker compose config --quiet
sudo docker compose build web backup
sudo docker compose up -d web gateway metrics
sudo docker compose ps
فرمان ساخت گذرواژه فایل موجود را بازنویسی نمیکند. پیش از اتکا به پشتیبان، گذرواژه را جداگانه هم نگه دارید. بررسی خاموش Compose مقدار رازهای جایگزینشده را چاپ نمیکند. فرمان up -d ایمیجها را دریافت و سرویسها را در پسزمینه اجرا میکند. کار پشتیبانگیری هنوز اجرا نمیشود.
بررسی نتیجه
روی سرور این فرمانها را اجرا کنید. حدود ۳۰ ثانیه برای نخستین گردآوری متریک صبر کنید.
curl --fail --resolve lab.test:18080:127.0.0.1 http://lab.test:18080/
curl --fail 'http://127.0.0.1:19090/api/v1/query?query=up'
پاسخ نخست شامل Homelab practice است. پاسخ دوم باید دو نتیجهٔ up با مقدار 1 داشته باشد. این یعنی Prometheus توانسته متریک آن مقصد را بخواند؛ به معنای سالم بودن تمام قابلیتهای برنامه نیست.
برای باز کردن صفحهها از لپتاپ، در یک ترمینال جداگانه روی لپتاپ فرمان زیر را اجرا و نام کاربر و سرور را جایگزین کنید:
ssh -N -L 18080:127.0.0.1:18080 -L 19090:127.0.0.1:19090 learner@YOUR_SERVER
ترمینال را باز نگه دارید. نشانی http://127.0.0.1:19090 صفحهٔ Prometheus را باز میکند. برای وبسایت، طبق راهنمای سیستمعامل خود خط 127.0.0.1 lab.test را به فایل hosts لپتاپ اضافه و http://lab.test:18080 را باز کنید. راه دیگر اجرای فرمان curl بالا روی لپتاپ است که به ویرایش hosts نیاز ندارد. گیتوی نام درخواستشده را بررسی میکند؛ نشانی IP بهتنهایی پاسخ 404 میدهد.
توقف و ادامه
در پوشهٔ پروژه، sudo docker compose stop کانتینرها را متوقف و sudo docker compose start آنها را دوباره اجرا میکند. فرمان sudo docker compose down کانتینرها و شبکههای پروژه را حذف میکند، ولی volumeهای نامدار میمانند. با up -d web gateway metrics دوباره ساخته میشوند. گزینهٔ --volumes دادهٔ متریک و پشتیبان را حذف میکند. برای رفع خطای نامشخص از آن استفاده نکنید.
اگر پورت اشغال است، با sudo ss -ltnp صاحب آن را پیدا کنید. پورت loopback دیگری در Compose انتخاب کنید و فرمان curl و انتقال SSH را هم تغییر دهید. سرویس دیگری را متوقف نکنید. اگر فایل مبدأ اتصال پیدا نشد، پوشه و استخراج بسته را بررسی کنید؛ فایل تنظیمات خالی نسازید.
مرحلهٔ بعد: شناخت تنظیمات.