Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions docker/README.md
Original file line number Diff line number Diff line change
@@ -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)
5 changes: 5 additions & 0 deletions docker/albyhub/.env
Original file line number Diff line number Diff line change
@@ -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=
137 changes: 65 additions & 72 deletions docker/albyhub/README.md
Original file line number Diff line number Diff line change
@@ -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)
7 changes: 7 additions & 0 deletions docker/bitcoin/.env
Original file line number Diff line number Diff line change
@@ -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=
92 changes: 51 additions & 41 deletions docker/bitcoin/README.md
Original file line number Diff line number Diff line change
@@ -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)
Loading