diff --git a/docker/README.md b/docker/README.md index f2f9d2b..55bde23 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,9 +1,13 @@ # Docker -This guide provides instructions for setting up a Bitcoin node using Docker. +คู่มือนี้จะแนะนำการติดตั้ง Bitcoin Node และบริการที่เกี่ยวข้องโดยใช้ Docker -## Guides +## รายการคู่มือ -* [Installation](./install.md) +* [การติดตั้ง Docker](./install.md) (เริ่มที่นี่) +* [Bitcoin Core Node](./bitcoin/README.md) +* [Electrum Server (Electrs)](./electrs/README.md) +* [Alby Hub (Wallet & Lightning Node)](./albyhub/README.md) +* [LNbits (Lightning Wallet System)](./lnbits/README.md) -[Back to main README](../README.md) +[กลับหน้าหลัก](../README.md) diff --git a/docker/albyhub/.env b/docker/albyhub/.env index 389545f..42e1b68 100644 --- a/docker/albyhub/.env +++ b/docker/albyhub/.env @@ -1,4 +1,9 @@ +# User ID และ Group ID (ปกติคือ 1000) UID=1000 GID=1000 + +# เวอร์ชันของ Alby Hub ที่ต้องการรัน VERSION=v1.20.0 + +# Path ของโฟลเดอร์สำหรับเก็บข้อมูล Alby Hub (เช่น /mnt/alby-hub-data) HOST_ALBY_HUB_DATA_DIR= diff --git a/docker/albyhub/README.md b/docker/albyhub/README.md index 7a598d4..39ec318 100644 --- a/docker/albyhub/README.md +++ b/docker/albyhub/README.md @@ -1,91 +1,84 @@ -# Albyhub Docker +# Alby Hub Docker (สำหรับมือใหม่) -คู่มือนี้จะแนะนำการ run albyhub docker container จาก docker image ของ [albyhub](https://github.com/getAlby/hub) +Alby Hub เป็นกระเป๋าเงิน (Wallet) และ Lightning Node ที่ใช้งานง่ายบนเบราว์เซอร์ คู่มือนี้จะช่วยให้คุณติดตั้ง Alby Hub ด้วย Docker ได้อย่างรวดเร็ว -## วิธี Run Docker Container -### กำหนดค่า Environment variables +## สิ่งที่ต้องเตรียม +1. **Docker**: หากยังไม่ได้ติดตั้ง ดูวิธีได้ที่ [การติดตั้ง Docker](../install.md) +2. **Bitcoin Node**: Alby Hub จำเป็นต้องเชื่อมต่อกับ Bitcoin Node (สามารถใช้โหนดของตัวเองหรือบริการภายนอกก็ได้) -กำหนดค่าสำหรับ Albyhub ในไฟล์ [.env](.env) +--- -* `UID` คือ ค่า user id ที่ใช้ run container -* `GID` คือ ค่า group id ที่ใช้ run container -* `VERSION` คือ version ที่ต้องการ run -* `HOST_ALBY_HUB_DATA_DIR` คือ ค่า directory ที่ใช้เก็บ data ของ albyhub ที่อยู่ใน host machine +## ขั้นตอนการติดตั้ง -### กำหนดค่าการเชื่อมต่อ Bitcoin Node -กำหนดค่า `environment` สำหรับเชื่อมต่อ Bitcoin Node ในไฟล์ [docker-compose.yml](docker-compose.yml) - -#### ตัวเลือกที่ 1 - ใช้ค่า Default ของ Albyhub -ไม่ต้องกำหนดค่าอะไรเพิ่มเติม ซึ่งค่า default ของ albyhub จะเชื่อมต่อไปยัง https://electrs.getalbypro.com - -#### ตัวเลือกที่ 2 - ใช้ค่า Esplora Server อื่น ๆ เช่น block stream หรือของตัวเอง -ให้กำหนดค่าดังนี้ - -``` -LDK_ESPLORA_SERVER: https://blockstream.info/api -``` - -#### ตัวเลือกที่ 3 - ใช้ Electrum Server ของตัวเอง -ให้กำหนดค่าดังนี้ - -``` -LDK_ELECTRUM_SERVER: electrum.example.com:50001 -``` - -#### ตัวเลือกที่ 4 - ใช้ Bitcoin Node ของตัวเอง -ให้กำหนดค่าดังนี้ - -``` -LDK_BITCOIND_RPC_HOST: 127.0.0.1 -LDK_BITCOIND_RPC_PORT: 8332 -LDK_BITCOIND_RPC_USER: "" -LDK_BITCOIND_RPC_PASSWORD: "" +### 1. เตรียม Folder สำหรับเก็บข้อมูล +สร้างโฟลเดอร์สำหรับเก็บข้อมูลของ Alby Hub: +```bash +mkdir -p /mnt/alby-hub-data ``` -**หมายเหตุ** -- ในกรณีที่ใช้ Bitcoin Node ของตัวเองและต้องการใช้ cookie file ในการ authentication ให้กำหนดค่าดังนี้ - -``` -LDK_BITCOIND_RPC_USER="__cookie__" -LDK_BITCOIND_RPC_PASSWORD="{ค่า cookie auth ของ bitcoind ซึ่งดูได้จาก bitcoin data directory}" -``` - -- Default port ของ albyhub คือ 8080 ถ้าต้องการเข้า หน้าจอ albyhub ด้่วย http (port 80) หรือ https (port 443) ต้อง map port ของ albyhub ไปยัง port ของ host machine ใน [docker-compose.yml](docker-compose.yml) - -```yaml -ports: - - 80:8080 -``` - -### Start docker container -ใช้คำสั่ง `docker compose up -d` เพื่อเริ่ม container - -```sh +### 2. ตั้งค่าไฟล์ .env +แก้ไขไฟล์ [.env](.env) เพื่อกำหนดค่าพื้นฐาน: +* **UID** และ **GID**: ID ของผู้ใช้ในเครื่อง (ปกติคือ `1000`) +* **HOST_ALBY_HUB_DATA_DIR**: ระบุ Path ของโฟลเดอร์ที่สร้างในขั้นตอนที่ 1 +* **VERSION**: เวอร์ชันของ Alby Hub ที่ต้องการรัน + +### 3. เลือกวิธีการเชื่อมต่อ Bitcoin Node +เปิดไฟล์ [docker-compose.yml](docker-compose.yml) และดูในส่วน `environment:` คุณสามารถเลือกเชื่อมต่อได้หลายวิธี: + +* **วิธีที่ 1: ใช้ค่าเริ่มต้นของ Alby (ง่ายที่สุด)** + ไม่ต้องแก้อะไร Alby Hub จะเชื่อมต่อไปยังบริการของ Alby โดยอัตโนมัติ + +* **วิธีที่ 2: ใช้ Electrum Server ของตัวเอง** + ระบุที่อยู่ของ Electrum Server: + ```yaml + LDK_ELECTRUM_SERVER: "electrum.example.com:50001" + ``` + +* **วิธีที่ 3: ใช้ Bitcoin Node ของตัวเอง (RPC User/Pass)** + แก้ไขค่าเหล่านี้ให้ตรงกับ Node ของคุณ: + ```yaml + LDK_BITCOIND_RPC_HOST: "127.0.0.1" + LDK_BITCOIND_RPC_PORT: 8332 + LDK_BITCOIND_RPC_USER: "your_user" + LDK_BITCOIND_RPC_PASSWORD: "your_password" + ``` + +* **วิธีที่ 4: ใช้ Bitcoin Node ของตัวเอง (Cookie Auth)** + หากต้องการใช้ cookie file ในการยืนยันตัวตน: + ```yaml + LDK_BITCOIND_RPC_HOST: "127.0.0.1" + LDK_BITCOIND_RPC_PORT: 8332 + LDK_BITCOIND_RPC_USER: "__cookie__" + LDK_BITCOIND_RPC_PASSWORD: "{ค่าจากไฟล์ .cookie ใน bitcoin data directory}" + ``` + +### 4. เริ่มรัน Alby Hub +ใช้คำสั่ง: +```bash docker compose up -d ``` +เมื่อรันเสร็จแล้ว คุณสามารถเข้าใช้งาน Alby Hub ผ่านเบราว์เซอร์ที่ `http://localhost:8080` (หรือไอพีของเครื่องคุณ) -### Check docker container status +--- -ใช้คำสั่ง `docker ps` เพื่อเช็ค status ของ container +## การตรวจสอบสถานะ -```sh +### เช็คว่าทำงานอยู่หรือไม่ +```bash docker ps ``` -### Stop docker container - -ใช้คำสั่ง `docker compose down` เพื่อหยุด container - -```sh -docker compose down +### ดู Logs การทำงาน +```bash +docker logs -f albyhub ``` -### Restart docker container - -ใช้คำสั่ง `docker compose restart` เพื่อ restart container +--- -```sh -docker compose restart -``` +## คำสั่งที่ใช้บ่อย +* **หยุดการทำงาน**: `docker compose down` +* **เริ่มการทำงานใหม่**: `docker compose restart` +* **อัปเดตเวอร์ชัน**: แก้ไข `VERSION` ใน `.env` แล้วรัน `docker compose up -d` อีกครั้ง -[Back to main README](../README.md) +--- +[กลับไปหน้าหลัก](../../README.md) diff --git a/docker/bitcoin/.env b/docker/bitcoin/.env index cfe9181..0c8555d 100644 --- a/docker/bitcoin/.env +++ b/docker/bitcoin/.env @@ -1,7 +1,14 @@ +# User ID และ Group ID (ตรวจสอบได้ด้วยคำสั่ง id) UID=1000 GID=1000 + +# รายละเอียดของ Image ที่จะใช้ IMAGE_NAME=lnliz/bitcoind VERSION=v29.0 + +# Path ของโฟลเดอร์สำหรับเก็บข้อมูลบล็อกเชน (เช่น /mnt/bitcoin-data) HOST_DATA_DIR= + +# การตั้งค่าสำหรับ Tor (หากไม่ใช้ ให้เว้นว่างไว้) TOR_GID=123 TOR_AUTH_COOKIE_FILE= diff --git a/docker/bitcoin/README.md b/docker/bitcoin/README.md index f806661..8545d4a 100644 --- a/docker/bitcoin/README.md +++ b/docker/bitcoin/README.md @@ -1,63 +1,73 @@ -# Bitcoin Core Docker +# Bitcoin Core Docker (สำหรับมือใหม่) -คู่มือนี้จะแนะนำการ run docker container จาก docker image ของ [lnliz/docker-bitcoind](https://github.com/lnliz/docker-bitcoind) ซึ่ง fork มาจาก [lncm/docker-bitcoind](https://github.com/lncm/docker-bitcoind) ที่ fork มาจาก [ruimarinho/docker-bitcoin-core](https://github.com/ruimarinho/docker-bitcoin-core) อีกที ใน repository นี้ จะมี Dockerfile ที่ใช้ในการสร้าง image bitcoin สามารถเข้าไปตรวจสอบกันได้เลยครับ +หน้านี้จะแนะนำการติดตั้ง Bitcoin Core Node โดยใช้ Docker ซึ่งเป็นวิธีที่ง่ายและสะดวกที่สุดสำหรับผู้เริ่มต้นในการรันโหนดของตัวเอง -## วิธี Run Docker Container -### Environment Variables +## สิ่งที่ต้องเตรียม +1. **Docker**: หากยังไม่ได้ติดตั้ง สามารถดูวิธีได้ที่ [การติดตั้ง Docker](../install.md) +2. **พื้นที่จัดเก็บข้อมูล**: สำหรับ Full Node (Mainnet) ควรมีพื้นที่ว่างอย่างน้อย 600GB - 1TB (แนะนำเป็น SSD เพื่อความเร็วในการ Sync) -กำหนดค่า Environment Variables ในไฟล์ [.env](.env) +--- -#### Bitcoin -* `UID` คือ ค่า user id ที่ใช้ run container ควรตั้งเป็น user id ของ user bitcoind ใน container ซึ่งเท่ากับ 1000 -* `GID` คือ ค่า group id ที่ใช้ run container ควรตั้งเป็น group id ของ user bitcoind ใน container ซึ่งเท่ากับ 1000 -* `IMAGE_NAME` ชื่อ image ที่ต้องการ run -* `VERSION` คือ version ที่ต้องการ run -* `HOST_DATA_DIR` คือ ค่า directory ที่ใช้เก็บ data ของ bitcoin ที่อยู่ใน host machine +## ขั้นตอนการติดตั้ง -#### Tor -* `TOR_GID` คือ ค่า group id ที่ใช้ run tor ใน host machine เพื่อให้ docker add user ที่เราใช้ในการ run เข้าไปใน tor group เพื่ออ่านไฟล์ auth cookie ของ tor -* `TOR_AUTH_COOKIE_FILE` คือค่า file path ที่ใช้เก็บ auth cookie ของ tor ที่อยู่ใน host machine ใช้สำหรับเชื่อมต่อ tor control เพื่อ hidden service - -**หมายเหตุ:** -- ถ้าต้องการใช้ tor จำเป็นต้องมีค่า `TOR_GID` และ `TOR_AUTH_COOKIE_FILE` ในการ run bitcoin daemon -- ถ้าไม่ต้องการใช้ tor ในการ run bitcoin daemon ให้ลบ 2 ส่วนนี้ใน [docker-compose.yml](docker-compose.yml) ได้เลย -```yml -group_add: - - ${TOR_GID} -``` -```yml -- ${TOR_AUTH_COOKIE_FILE}:/run/tor/control.authcookie:ro +### 1. เตรียม Folder สำหรับเก็บข้อมูล +สร้างโฟลเดอร์ในเครื่องของคุณเพื่อเก็บข้อมูลบล็อกเชน (เช่น `/mnt/bitcoin-data`) +```bash +mkdir -p /mnt/bitcoin-data ``` -### Start docker container -ใช้คำสั่ง `docker compose up -d` เพื่อเริ่ม container +### 2. ตั้งค่าไฟล์ .env +แก้ไขไฟล์ [.env](.env) ในโฟลเดอร์นี้ เพื่อกำหนดค่าที่จำเป็น: + +* **UID** และ **GID**: คือ User ID และ Group ID ของคุณ (สามารถตรวจสอบได้ด้วยคำสั่ง `id`) ปกติค่าเริ่มต้นคือ `1000` +* **HOST_DATA_DIR**: **(สำคัญมาก)** ระบุ Path ของโฟลเดอร์ที่คุณสร้างในขั้นตอนที่ 1 +* **IMAGE_NAME** และ **VERSION**: ชื่อ Image และเวอร์ชันที่ต้องการรัน (ปกติค่าเริ่มต้นจะตั้งมาให้แล้ว) +* **TOR_GID** และ **TOR_AUTH_COOKIE_FILE**: สำหรับผู้ที่ต้องการใช้ Tor เพื่อความเป็นส่วนตัว (หากไม่ใช้ ให้เว้นว่างไว้และดูหมายเหตุด้านล่าง) -```sh +### 3. เริ่มรัน Node +ใช้คำสั่งด้านล่างเพื่อเริ่มการทำงานในโหมด Background (เบื้องหลัง): + +```bash docker compose up -d ``` -### Check docker container status +--- -ใช้คำสั่ง `docker ps` เพื่อเช็ค status ของ container +## การตรวจสอบสถานะ -```sh +### ดูว่า Node ทำงานอยู่หรือไม่ +ใช้คำสั่งเพื่อเช็คว่า Container ชื่อ `bitcoind` กำลังทำงาน (Up) หรือไม่: +```bash docker ps ``` -### Stop docker container - -ใช้คำสั่ง `docker compose down` เพื่อหยุด container +### ดู Logs การทำงาน (เพื่อเช็คว่ากำลัง Sync หรือไม่) +คำสั่งนี้จะช่วยให้คุณเห็นสิ่งที่โปรแกรมกำลังทำอยู่แบบ Real-time: +```bash +docker logs -f bitcoind +``` -```sh -docker compose down +### เช็คสถานะการ Sync ผ่าน bitcoin-cli +คุณสามารถส่งคำสั่งเข้าไปใน Container เพื่อเช็คข้อมูลของ Blockchain ได้โดยตรง: +```bash +docker exec -it bitcoind bitcoin-cli -datadir=/data/.bitcoin/ getblockchaininfo ``` +*มองหาค่า `blocks` (จำนวนบล็อกปัจจุบัน) และ `verificationprogress` (ถ้าเป็น `0.99...` แสดงว่าใกล้ Sync เสร็จแล้ว)* -### Restart docker container +--- -ใช้คำสั่ง `docker compose restart` เพื่อ restart container +## คำสั่งที่ใช้บ่อย -```sh -docker compose restart -``` +* **หยุดการทำงาน**: `docker compose down` +* **เริ่มการทำงานใหม่**: `docker compose restart` +* **อัปเดตเวอร์ชัน**: แก้ไขค่า `VERSION` ในไฟล์ `.env` จากนั้นรัน `docker compose up -d` อีกครั้ง Docker จะทำการดาวน์โหลดเวอร์ชันใหม่และรันให้โดยอัตโนมัติ + +--- + +## หมายเหตุสำหรับการใช้ Tor +หากคุณ**ไม่ต้องการ**ใช้ Tor ให้แก้ไขไฟล์ [docker-compose.yml](docker-compose.yml) โดยลบหรือ Comment ส่วนเหล่านี้ออก: +1. ในส่วน `group_add:` ให้ลบบรรทัด `- ${TOR_GID}` +2. ในส่วน `volumes:` ให้ลบบรรทัด `- ${TOR_AUTH_COOKIE_FILE}:/run/tor/control.authcookie:ro` -[Back to main README](../README.md) +--- +[กลับไปหน้าหลัก](../../README.md) diff --git a/docker/electrs/README.md b/docker/electrs/README.md index 040cd05..4c3a247 100644 --- a/docker/electrs/README.md +++ b/docker/electrs/README.md @@ -1,100 +1,81 @@ -# Electrs Docker +# Electrs Docker (สำหรับมือใหม่) -คู่มือนี้จะแนะนำการสร้าง docker image และ docker container จาก repository ของ [Electrs](https://github.com/romanz/electrs) +Electrs เป็นโปรแกรมที่ช่วยให้ Bitcoin Wallet (เช่น Electrum, BlueWallet, Alby) เชื่อมต่อกับ Bitcoin Node ของคุณได้รวดเร็วขึ้น คู่มือนี้จะช่วยคุณติดตั้ง Electrs ผ่าน Docker -## วิธี Build Docker Image -### Build Docker Image -เพื่อสร้าง docker image ของ Electrs ให้เรียกใช้คำสั่ง `./build/build.sh` ในโฟลเดอร์ [build](build) ของโปรเจค +## สิ่งที่ต้องเตรียม +1. **Docker**: ดูวิธีได้ที่ [การติดตั้ง Docker](../install.md) +2. **Bitcoin Node**: ต้อง Sync เสร็จสมบูรณ์แล้ว (ควรใช้พื้นที่เก็บข้อมูลเดียวกันหรือเชื่อมต่อถึงกันได้) -``` -./build/build.sh -``` - -ใน script นี้จะกำหนดค่าเริ่มต้นของ IMAGE_NAME และ VERSION ให้คุณ ซึ่งคุณสามารถแก้ไขค่าเหล่านี้ได้ตามความต้องการ - หลังจาก run script แล้ว อาจจะใช้เวลาในการ compile rust project และ build docker image สักระยะนึง - -### Dockerfile -[build/build.sh](build/build.sh) ทำหน้าที่สร้าง docker image จาก Dockerfile - -ซึ่งคุณสามารถตรวจสอบการทำงานและทำความเข้าใจ [Dockerfile](build/Dockerfile) ได้ในโฟลเดอร์ [build](build) - -### ตรวจสอบ Docker Image -หลังจากสร้าง docker image แล้ว คุณสามารถตรวจสอบ docker image ที่สร้างได้โดยเรียกใช้คำสั่ง `docker images` - -``` -docker images -``` - -คำสั่ง `docker images` จะแสดงรายการของ docker image ที่มีอยู่ในเครื่องของคุณ - -``` -$ docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -local/electrs v0.10.9 1b22aef2becb 3 months ago 111MB -``` - -## วิธี Run Docker Container -### Environment Variables - -กำหนดค่า Environment Variables ในไฟล์ [.env](run/.env) - -* `UID` คือ ค่า user id ที่ใช้ run container +--- -* `GID` คือ ค่า group id ที่ใช้ run container +## ขั้นตอนที่ 1: การ Build Docker Image (สร้างโปรแกรม) -* `ELECTRS_IMAGE_NAME` ชื่อ image ที่ build จาก step ก่อนหน้า +เนื่องจาก Electrs ควรถูกสร้าง (Compile) ให้เหมาะกับสถาปัตยกรรมของเครื่องคุณ เราจะเริ่มด้วยการสร้าง Docker Image เองก่อน: -* `ELECTRS_VERSION` คือ version ของ image ที่ build จาก step ก่อนหน้า +1. เข้าไปที่โฟลเดอร์ `build`: + ```bash + cd build + ``` +2. รันสคริปต์สำหรับสร้าง Image: + ```bash + chmod +x build.sh + ./build.sh + ``` + *(ขั้นตอนนี้อาจใช้เวลาสักพัก ขึ้นอยู่กับความเร็วเครื่องของคุณ)* +3. ตรวจสอบว่า Image ถูกสร้างสำเร็จ: + ```bash + docker images + ``` + ควรเห็นรายการชื่อ `local/electrs` ปรากฏขึ้น -* `ELECTRS_LOG_FILTERS` คือ Log level ของ electrs ปกติจะกำหนดเป็น INFO +### การทำงานของ Dockerfile (ข้อมูลเพิ่มเติม) +หากคุณสงสัยว่าในขั้นตอนการ Build เกิดอะไรขึ้นบ้าง สามารถดูได้ที่ไฟล์ [Dockerfile](build/Dockerfile): +1. **ดาวน์โหลด Source Code**: ดึงโค้ดล่าสุดจาก [GitHub ของ romanz/electrs](https://github.com/romanz/electrs) +2. **Compile โปรแกรม**: ใช้ภาษา Rust ในการสร้างไฟล์โปรแกรม (Binary) ที่เหมาะสมกับเครื่องของคุณที่สุด +3. **สร้าง Image ที่ปลอดภัย**: นำไฟล์โปรแกรมที่สร้างเสร็จแล้ว ไปใส่ไว้ในสภาพแวดล้อมที่สะอาดและปลอดภัย (Debian Slim) โดยแยกส่วนที่ใช้ Build ออกไปเพื่อให้ Image มีขนาดเล็กที่สุด -* `ELECTRS_NETWORK` คือ Network ที่ต้องการรัน ปกติจะกำหนดเป็น bitcoin +--- -* `ELECTRS_HOST_DB_DIR` คือ Directory ที่ใช้เก็บ database ของ electrs บน host machine +## ขั้นตอนที่ 2: การรัน Electrs Container -* `ELECTRS_DB_DIR` คือ Directory ที่ใช้เก็บ database ของ electrs ภายใน container ซึ่งจะเป็น `/home/${USER}/electrs/db` +หลังจากสร้าง Image สำเร็จแล้ว เราจะมาตั้งค่าการทำงาน: -* `ELECTRS_HOST_DAEMON_DIR` คือ Directory ที่ใช้เก็บข้อมูล bitcoin daemon บน host machine +1. เข้าไปที่โฟลเดอร์ `run`: + ```bash + cd ../run + ``` +2. ตั้งค่าไฟล์ [.env](run/.env) เพื่อเชื่อมต่อกับ Bitcoin Node: + * **ELECTRS_HOST_DB_DIR**: โฟลเดอร์ที่จะเก็บ Database ของ Electrs (แนะนำเป็น SSD) + * **ELECTRS_HOST_DAEMON_DIR**: Path ของโฟลเดอร์ข้อมูลของ Bitcoin Node ที่ Sync ไว้ + * **ELECTRS_DAEMON_RPC_ADDR**: ไอพีของ Bitcoin RPC (ปกติคือ `127.0.0.1:8332`) -* `ELECTRS_DAEMON_DIR` คือ Directory ที่ใช้เก็บข้อมูล bitcoin daemon ภายใน container ซึ่งจะเป็น `/home/${USER}/electrs/bitcoin` +3. เริ่มรัน Electrs: + ```bash + docker compose up -d + ``` -* `ELECTRS_DAEMON_RPC_ADDR` คือ bitcoin daemon rpc address +--- -* `ELECTRS_DAEMON_P2P_ADDR` คือ bitcoin daemon p2p address +## การตรวจสอบสถานะ -* `ELECTRS_ELECTRUM_RPC_ADDR` คือ electrum rpc address ที่เราจะ expose ให้สามารถเชื่อมต่อได้ - -`${USER}` ในที่นี้จะหมายถึง user ของ host machine ที่ใช้ build docker image - -### Start docker container -เข้าไปที่ [run](run) แล้วใช้คำสั่ง `docker compose up -d` เพื่อเริ่ม container - -``` -docker compose up -d +### ดูการทำงานของ Electrs +```bash +docker logs -f electrs ``` +*ช่วงแรก Electrs จะต้องทำการ "Indexing" ข้อมูลจาก Bitcoin Node ซึ่งอาจใช้เวลาหลายชั่วโมงถึงหลายวัน ขึ้นอยู่กับความเร็วของ Disk* -### Check docker container status - -ใช้คำสั่ง `docker ps` เพื่อเช็ค status ของ container - -``` +### เช็คพอร์ตการเชื่อมต่อ +ตรวจสอบว่า Electrum Server เปิดรอรับการเชื่อมต่อ (Port 50001) หรือยัง: +```bash docker ps ``` -### Stop docker container - -ใช้คำสั่ง `docker compose down` เพื่อหยุด container +--- -``` -docker compose down -``` - -### Restart docker container - -ใช้คำสั่ง `docker compose restart` เพื่อ restart container - -``` -docker compose restart -``` +## คำสั่งที่ใช้บ่อย +* **หยุดการทำงาน**: `docker compose down` (รันในโฟลเดอร์ `run`) +* **เริ่มการทำงานใหม่**: `docker compose restart` +* **อัปเดตเวอร์ชัน**: แก้ไขค่า `VERSION` ใน `build/build.sh` แล้วกลับไปทำขั้นตอนที่ 1 และ 2 ใหม่ -[Back to main README](../README.md) +--- +[กลับไปหน้าหลัก](../../README.md) diff --git a/docker/electrs/run/.env b/docker/electrs/run/.env index fa3624a..9ee76e5 100644 --- a/docker/electrs/run/.env +++ b/docker/electrs/run/.env @@ -1,27 +1,30 @@ +# User ID และ Group ID (ปกติคือ 1000) UID=1000 GID=1000 + +# รายละเอียด Image (ควรตรงกับที่ Build ไว้ในขั้นตอนที่ 1) ELECTRS_IMAGE_NAME=local/electrs ELECTRS_VERSION=master + +# การตั้งค่าพื้นฐาน ELECTRS_LOG_FILTERS=INFO ELECTRS_NETWORK=bitcoin -# electrs db directory in host +# โฟลเดอร์เก็บ Database ของ Electrs บนเครื่องหลัก (แนะนำเป็น SSD) ELECTRS_HOST_DB_DIR= -# electrs db directory in docker -ELECTRS_DB_DIR=/home/electrs/electrs/db - -# bitcoin daemon directory in host +# โฟลเดอร์เก็บข้อมูลบล็อกเชนของ Bitcoin Node บนเครื่องหลัก ELECTRS_HOST_DAEMON_DIR= -# bitcoin daemon directory in docker -ELECTRS_DAEMON_DIR=/home/electrs/electrs/bitcoin - -# bitcoin daemon rpc address and port for electrs to connect +# ไอพีและพอร์ตสำหรับเชื่อมต่อ Bitcoin Node RPC ELECTRS_DAEMON_RPC_ADDR=127.0.0.1:8332 -# bitcoin daemon p2p address and port for electrs to connect +# ไอพีและพอร์ตสำหรับเชื่อมต่อ Bitcoin Node P2P ELECTRS_DAEMON_P2P_ADDR=127.0.0.1:8333 -# electrum rpc address and port for other service to connect -ELECTRS_ELECTRUM_RPC_ADDR=127.0.0.1:50001 +# พอร์ตสำหรับให้ Wallet เชื่อมต่อเข้าหา Electrs (ปกติคือ 50001) +ELECTRS_ELECTRUM_RPC_ADDR=0.0.0.0:50001 + +# Path ภายใน Container (ไม่ต้องแก้ไข) +ELECTRS_DB_DIR=/home/electrs/electrs/db +ELECTRS_DAEMON_DIR=/home/electrs/electrs/bitcoin diff --git a/docker/lnbits/README.md b/docker/lnbits/README.md new file mode 100644 index 0000000..3e9aeee --- /dev/null +++ b/docker/lnbits/README.md @@ -0,0 +1,82 @@ +# LNbits Docker (สำหรับมือใหม่) + +LNbits เป็นระบบกระเป๋าเงิน (Wallet) และระบบบริหารจัดการ Lightning Network ที่ทรงพลัง คุณสามารถติดตั้ง Extension ต่างๆ เพื่อเปลี่ยน LNbits ให้เป็นระบบ POS, Paywall, หรือแม้แต่ระบบจัดการพนักงานได้ + +## สิ่งที่ต้องเตรียม +1. **Docker**: ดูวิธีได้ที่ [การติดตั้ง Docker](../install.md) +2. **Lightning Backend**: LNbits ต้องเชื่อมต่อกับ Lightning Node (เช่น LND, Core Lightning, Eclair) หรือใช้บริการภายนอกเพื่อเป็นแหล่งเงินทุน (Funding Source) + +--- + +## ขั้นตอนการติดตั้ง + +### 1. เตรียม Folder สำหรับเก็บข้อมูล +สร้างโฟลเดอร์สำหรับเก็บข้อมูลของ LNbits: +```bash +mkdir -p data +``` + +### 2. ดาวน์โหลดและตั้งค่าไฟล์ .env +LNbits แนะนำให้ดาวน์โหลดไฟล์ตัวอย่างจาก Repository หลักโดยตรง: +```bash +curl -sSL https://raw.githubusercontent.com/lnbits/lnbits/main/.env.example -o .env +``` +จากนั้นแก้ไขค่าต่างๆ ในไฟล์ `.env` ตามต้องการ (เช่น `LNBITS_SITE_TITLE`) และตรวจสอบให้แน่ใจว่า `LNBITS_ADMIN_UI=true` เพื่อความสะดวกในการตั้งค่า + +### 3. เริ่มรัน LNbits +แก้ไขไฟล์ [docker-compose.yml](docker-compose.yml) โดยเปลี่ยนคำว่า `LNBITS_PATH` เป็นตำแหน่งโฟลเดอร์ปัจจุบันของคุณ (เช่น `./`) จากนั้นใช้คำสั่ง: +```bash +docker compose up -d +``` +เมื่อรันเสร็จแล้ว คุณสามารถเข้าใช้งาน LNbits ผ่านเบราว์เซอร์ที่ `http://localhost:5000` (หรือไอพีของเครื่องคุณ) + +--- + +## การเข้าใช้งานครั้งแรก (สร้าง SuperUser) 🔑 + +เมื่อคุณเปิดหน้าเว็บครั้งแรก ระบบจะตรวจพบว่ายังไม่มีผู้ใช้ และจะให้คุณสร้าง **SuperUser** ของระบบ: +1. เข้าไปที่ `http://localhost:5000` +2. ระบบจะแสดงหน้าจอให้คุณตั้งค่า **Username** และ **Password** สำหรับ SuperUser +3. เมื่อสร้างเสร็จแล้ว คุณจะสามารถเข้าสู่หน้า **Admin UI** เพื่อตั้งค่า Funding Source (เช่น เชื่อมต่อกับ Bitcoin Node หรือ LND) ได้ทันที + +--- + +## การเปิดให้เข้าใช้งานจากภายนอก (Cloudflare Tunnel) 🌐 +คุณสามารถเพิ่มบริการ Cloudflare Tunnel ลงในไฟล์ `docker-compose.yml` เพื่อสร้าง URL ให้เข้าใช้งานจากที่ไหนก็ได้โดยไม่ต้องเปิดพอร์ต: + +เพิ่มส่วนนี้ต่อท้ายใน `services:`: +```yaml + cloudflared: + container_name: lnbits-tunnel + image: cloudflare/cloudflared:latest + command: tunnel --url http://lnbits:5000 +``` +หลังจากรัน `docker compose up -d` คุณสามารถดู URL ได้จาก Log: +```bash +docker logs lnbits-tunnel +``` +*มองหาข้อความประมาณ `https://something-random.trycloudflare.com` ใน Log* + +--- + +## ข้อแนะนำด้านความปลอดภัย (สำคัญมาก) ⚠️ +หลังจากที่คุณสร้าง SuperUser และตั้งค่า Funding Source สำเร็จแล้ว **ควรปิดการสร้าง User ใหม่** เพื่อไม่ให้คนแปลกหน้ามาใช้งานเครื่องของคุณ โดยวิธีที่ง่ายที่สุดคือตั้งค่าผ่านหน้าเว็บ: + +1. เข้าไปที่เมนู **Manage Server** ในหน้า Admin +2. ไปที่ส่วน **Security** +3. ปิดตัวเลือก **Allow new accounts** แล้วกด Save + +--- + +## การตรวจสอบสถานะ +* **เช็คสถานะ**: `docker ps` +* **ดู Logs ของ LNbits**: `docker logs -f lnbits` + +--- + +## คำสั่งที่ใช้บ่อย +* **หยุดการทำงาน**: `docker compose down` +* **อัปเดตเวอร์ชัน**: `docker compose pull && docker compose up -d` + +--- +[กลับไปหน้าหลัก](../../README.md) diff --git a/docker/lnbits/docker-compose.yml b/docker/lnbits/docker-compose.yml new file mode 100644 index 0000000..25f1046 --- /dev/null +++ b/docker/lnbits/docker-compose.yml @@ -0,0 +1,15 @@ +services: + lnbits: + container_name: lnbits + image: lnbits/lnbits + volumes: + - ./.env:/app/.env + - ~/data/lnbits/data:/app/data + ports: + - "5000:5000" + environment: + LNBITS_EXTENSIONS_PATH: "/app/data/extensions" + cloudflared: + container_name: lnbits-cloudflare-tunnel + image: cloudflare/cloudflared:latest + command: tunnel --url http://lnbits:5000