Video failed to load

Docker: A Powerful Containerization Platform (+ Lazydocker)

2379 words
12 minutes
Docker: A Powerful Containerization Platform (+ Lazydocker)

Docker#

At A Glance#

Pernahkah kalian mendengar Docker?

Jika kalian adalah software developer atau minimal seorang tech-enthusiast seperti saya, sudah dipastikan kalian tau Docker. Tapi, biarkan saya tetap menjelaskan Docker di artikel ini.

What is Docker?#

Docker adalah sebuah layanan open-source yang menyediakan kemampuan untuk mengemas dan menjalankan sebuah aplikasi dalam lingkungan terisolasi yang disebut sebagai “container”.1 Docker memungkinkan kita untuk menjalankan software yang tidak bergantung pada dependensi yang terpasang di host.2 Dengan demikian, proses pengembangan software menjadi lebih cepat.

Sejarahnya, Docker pertama kali diperkenalkan ke publik pada acara PyCon di tahun 2013 oleh pembuatnya, yaitu Solomon Hykes.3 Di tahun-tahun berikutnya, perkembangan Docker di banyak sistem operasi mulai masif. Misalnya, di tahun 2016, Docker untuk Mac dan Windows rilis ke publik.

Apa itu container? Kita akan lihat apa itu container sambil membandingkannya dengan Virtual Machine (VM) di bawah ini.

Container vs Virtual Machine (VM)#

Container adalah software yang mengemas/membungkus kode berikut dengan dependensinya sehingga sebuah aplikasi dapat berjalan dengan cepat dan dapat diandalkan (reliable) meskipun di environment yang berbeda.4 Selain Docker, Podman adalah salah satu platform kontainerisasi juga.

INFO

Salah satu permasalahan di dunia software development adalah ketidak-compatible-an sebuah aplikasi dengan lingkungan barunya.

Contohnya, ketika saya mengembangkan (re: membuat) sebuah aplikasi online chatting, saya tentu membuatnya di komputer atau laptop pribadi saya (intinya satu komputer). Akan tetapi, ketika saya ingin agar aplikasi tersebut di-test atau bahkan diproduksi (dirilis), aplikasi tersebut akan berpindah lingkungan (komputer) yang berbeda-beda, mulai dari sistem operasinya, arsitekturnya, versinya, dan lain sebagainya. Dengan demikian, aplikasi saya tersebut memiliki kemungkinan tidak berjalan dengan baik di lingkungan barunya tersebut. Solusi konvensionalnya adalah, saya sebagai developer-nya, perlu membuat banyak versi dari aplikasi online chatting tersebut agar dapat berjalan dengan baik di lingkungannya masing-masing. Misalnya, aplikasi versi Linux, aplikasi versi Mac, dan aplikasi versi Windows.

Nah, dengan adanya containerization (sistem kontainer) ini, saya tidak perlu mengkhawatirkan permasalahan di atas dan dapat membuat satu aplikasi saja. Sebab, saya dapat meng-kontainerisasi (membuat image container) aplikasi saya tersebut ketika akan di-test atau di-deploy ke produksi (dirilis). Dengan adanya sistem containerization ini, semua orang di sistem yang berbeda akan tetap dapat menjalankan aplikasi online chatting saya itu tanpa harus terkendala sistem operasi yang berbeda, arsitektur yang berbeda, versi yang berbeda, dan lain sebagainya.

Virtual Machine di sisi lain adalah sebuah virtualisasi atau emulasi dari komputer fisik.5 Virtual machine memungkinkan kita untuk menjalankan banyak sistem operasi dalam satu sistem operasi saja. Software yang meng-handle proses virtualisasi ini disebut Hypervisor. Beberapa hypervisor yang populer ada Virtualbox, VMWare, dan Virt-Manager.6

Berikut adalah perbandingan Container & Virtual Machine:

Container VS Virtual Machine.
Container VS Virtual Machine.

AspekContainerVirtual Machine (VM)
ArsitekturBerbagi kernel host OSMenggunakan hypervisor + guest OS
UkuranRingan (MB)Lebih besar (GB)
Waktu startupSangat cepat (detik)Lebih lambat (menit)
IsolasiIsolasi proses (lebih ringan)Isolasi penuh (lebih kuat)
KinerjaMendekati native (lebih efisien)Ada overhead dari hypervisor
PortabilitasSangat tinggi (mudah dipindahkan)Lebih kompleks
Resource usageLebih hemat resourceLebih boros resource
Sistem operasiBerbagi OS hostBisa menjalankan OS berbeda
KeamananLebih rendah dibanding VMLebih tinggi karena isolasi penuh
DeploymentMudah & cepat (CI/CD friendly)Lebih kompleks
Use case utamaMicroservices, aplikasi cloud-nativeAplikasi legacy, isolasi penuh
Contoh teknologiDocker, KubernetesVMware, VirtualBox, Hyper-V

Installation#

Berikut adalah cara meng-install docker di beberapa sistem operasi Linux:

DistroCommand
Debian/Ubuntusudo apt install -y docker
Arch Linuxsudo pacman -Sy docker
Fedorasudo dnf install docker
Opensusesudo zypper install docker
NOTE

NixOS:
Masukkan baris berikut di file konfigurasi (/etc/nixos/configuration.nix):

nix
environment.systemPackages = [
pkgs.docker
];

Atau jika menggunakan nix-shell:

Terminal window
nix-shell -p docker

Untuk memastikan docker sudah ter-install:

Terminal window
docker -v
docker version

docker version
docker version

Berikut adalah tautan official Docker:

Website: https://www.docker.com/
Github: https://github.com/docker

Set Up#

1. Starting docker#

Untuk memulai Docker daemon, gunakan perintah:

Terminal window
sudo docker systemctl start docker

Untuk memastikan Docker daemon berjalan otomatis setelah login:

Terminal window
sudo systemctl enable docker

2. Stopping docker#

Untuk mematikan Docker daemon, gunakan perintah:

Terminal window
sudo systemctl stop docker
sudo systemctl stop docker.socket

Untuk me-non-aktifkan Docker daemon dari berjalan otomatis setiap login:

Terminal window
sudo systemctl disable docker
sudo systemctl disable docker.socket

3. Adding docker group#

Secara default, Docker daemon berjalan sebagai root user sehingga setiap kali user non-root mengeksekusi perintah docker, perintah sudo diperlukan. Jika kita ingin agar perintah docker dapat dieksekusi tanpa perlu sudo, berikut caranya:7

  1. Buat grup docker
Terminal window
sudo groupadd docker
  1. Tambahkan user kita ke grup docker.
Terminal window
sudo usermod -aG docker $USER
  1. Logout & login kembali agar perubahan bisa teraktivasi.

  2. Jika malas logut, aktivasi perubahan tersebut dengan perintah:

Terminal window
newgrp docker
  1. Konfirmasi
Terminal window
docker run hello-world

Essential Commands#

Berikut adalah perintah-perintah penting untuk melakukan manajemen container di Docker.89

Mencari docker image dari Docker Registry, seperti DockerHub:

Terminal window
docker search <image_name>

docker search
docker search

docker pull#

Mengambil (men-download) docker image:

Terminal window
docker pull <image_name>

docker pull
docker pull

docker images#

Melihat daftar docker image yang ada di komputer:

Terminal window
sudo docker images

docker images
docker images

docker login#

Perintah ini selain akan me-login-kan kita ke Docker.
Kredensial docker disimpan di komputer lokal (/home/$USER/.docker/config.json).

Login ke docker:

Terminal window
docker login -u <username>
NOTE

Jika belum punya akun, maka kita perlu membuat akun (register) terlebih dahulu di website official Docker: https://www.docker.com/

docker login
docker login

docker logout#

Perintah ini selain akan me-logout-kan kita ke Docker.
Kredensial docker dihapus di komputer lokal (/home/$USER/.docker/config.json).

Terminal window
docker logout

docker logout
docker logout

docker build#

Membuat docker image dari Dockerfile di current directory:

Terminal window
docker build -t <image_name> .

Membuat docker image tanpa cache:

Terminal window
docker build --no-cache -t <image_name>

Misalnya, saya ingin membuat sebuah docker image dari file app.py berikut menggunakan Dockerfile:

docker build
docker build

Tinggal jalankan perintah docker build tanpa cache tersebut, dia akan mengunduh dependensi yang diperlukan dan membuat docker image-nya:

docker build
docker build

INFO

Berikut adalah isi file app.py:

app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "hello world!"
if __name__ == "__main__":
app.run(host="0.0.0.0")

Dan isi file Dockerfile-nya:

Dockerfile
FROM python:3.14.3-alpine
RUN pip install --upgrade pip
RUN pip install flask
CMD ["python","app.py"]
COPY app.py /app.py

Sumber: congnitiveclass.ai/courses/docker-essentials

docker push#

Menambahkan (meng-upload) docker image:

Terminal window
docker tag <local-image>:<tagname> <username>/<new-repo>:<tagname>
docker push <username>/<new-repo>:<tagname>
NOTE

Jika belum punya repository, kita perlu membuatnya terlebih dahulu.

docker push
docker push

Docker image-nya akan muncul di repository kita:

docker image in dockerhub repo
docker image in dockerhub repo

docker ps#

Melihat container yang sedang berjalan:

Terminal window
docker ps

docker ps
docker ps

Melihat semua container, termasuk yang sedang tidak berjalan:

Terminal window
docker ps -a

docker ps -a
docker ps -a

docker rm#

Menghapus satu atau lebih container:

Terminal window
docker rm -f <container_name / container_id>

docker rm
docker rm

docker rmi#

Menghapus satu atau lebih docker image:

Terminal window
docker rmi -f <image_name>

docker rmi
docker rmi

docker run#

Menjalankan docker image sebagai container:

Terminal window
docker run <image_name>

docker run
docker run

Kita bisa lihat, container-nya sudah berjalan:

docker run
docker run

docker start#

Menjalankan container:

Terminal window
docker start <container_id>

docker start
docker start

docker restart#

Me-restart container:

Terminal window
docker restart <container_id>

docker restart
docker restart

docker stop#

Menghentikan container:

Terminal window
docker stop <container_id>

docker stop
docker stop

docker logs#

Melihat log dari sebuah container:

Terminal window
docker logs <container_id>

docker logs
docker logs

docker stats#

Melihat alokasi resource yang dipakai oleh container:

Terminal window
docker stats

docker stats
docker stats

docker inspect#

Melihat informasi detail sebuah container:

Terminal window
docker inspect <container_id>

docker inspect
docker inspect

docker network#

Melihat daftar network:

Terminal window
docker network ls

docker network ls
docker network ls

Melihat detail sebuah network:

Terminal window
docker network inspect <network_name>

docker network inspect
docker network inspect

docker volume#

Volume Docker secara default berada di /var/lib/docker/volumes.

Untuk membuat volume baru:

Terminal window
docker volume create <volume_name>

Untuk melihat daftar volume yang tersedia:

Terminal window
docker volume ls

Untuk melihat informasi detail suatu volume:

Terminal window
docker volume inspect <volume_name>

Untuk menghapus volume:

Terminal window
docker volume rm <volume_name>

docker volume
docker volume

docker help#

Masih banyak lagi perintah-perintah docker lainnya yang belum dibahas di artikel ini. Tapi, kalian dapat mengeksplorasinya sendiri dengan perintah:

Terminal window
docker help # atau
docker -h

Saya coba lampirkan juga video Youtube tutorial untuk pemula.
Worth watching.

Docker Compose#

Docker Compose adalah sebuah alat dari Docker untuk mendefinisikan dan menjalankan banyak container dengan satu file konfigurasi.10 Jadi, melalui Docker Compose, jika kita ingin menjalankan banyak container, kita gak perlu membuat perintah docker run ... atau docker start ... satu persatu, tapi cukup dengan satu perintah Docker Compose aja.

At A Glance#

Pada prakteknya, kita hanya perlu sebuah file konfigurasi (YAML file) yang dijalankan dengan Docker Compose, seperti ini:

Terminal window
docker compose docker-compose.yml

Apa saja yang perlu “dideklarasikan” atau “didefinisikan” dalam file konfigurasi tersebut? Berikut adalah 3 komponen utama yang ada di dalam file konfigurasi Docker Compose:1112

  1. Services

Bagian services digunakan untuk mendefinisikan setiap kontainer yang akan menjadi bagian dari aplikasi kita. Inilah the pith of the configuration file alias bagian yang paling penting dalam file konfigurasi Docker Compose kita. Oleh kaerna karena itu, tanpa bagian services ini, Docker Compose belum bisa berjalan.

  1. Networks

Bagian networks digunakan untuk mendefinisikan jaringan Docker yang akan digunakan. Jika kita tidak mendefinisikan networks di file konfigurasi, Docker akan otomatis menggunakan jaringan default-nya (bridge).

  1. Volumes

Bagian networks digunakan untuk mendefinisikan penyimpanan aplikasi yang tidak bergantung pada container. Artinya, data aplikasi tidak akan hilang meski kontainernya berhenti atau di-restart.

Sehingga, nanti, secara umum, seperti inilah isi file docker-compose.yml kalian:

services:
service1:
image: ...
ports: ...
volumes: ...
environment: ...
service2:
build: ...
depends_on: ...
networks:
...
volumes:
...

Sampai sini, kita tidak perlu khawatir jika masih belum memahami secara utuh komponen-komponen tersebut. Kita akan lihat secara langsung implementasinya di bagian-bagian berikutnya pada artikel ini.

Installation#

Berikut adalah cara meng-install docker compose di beberapa sistem operasi Linux:

DistroCommand
Debian/Ubuntusudo apt install -y docker-compose
Arch Linuxsudo pacman -Sy docker-compose
Fedorasudo dnf install docker-compose
Opensusesudo zypper install docker-compose
NOTE

NixOS:
Masukkan baris berikut di file konfigurasi (/etc/nixos/configuration.nix):

nix
environment.systemPackages = [
pkgs.docker-compose
];

Atau jika menggunakan nix-shell:

Terminal window
nix-shell -p docker-compose

Untuk memastikan docker-compose sudah ter-install:

Terminal window
docker-compose -v # atau
docker compose version

docker compose version
docker compose version

Docker Compose juga bisa dilihat di repository Github milik Docker:

docker
/
compose
Waiting for api.github.com...
00K
0K
0K
Waiting...

Essential Commands#

Sebelum menjalankan perintah-perintah di bawah ini, kita perlu membuat sebuah skema untuk Docker Compose kita. Skemanya sederhana, saya akan menjalankan container nginx yang akan menampilkan halaman web berisi sebuah sapaan.13

Berikut adalah struktur direktori skema ini:

Terminal window
.
├── app
└── index.html
└── docker-compose.yml

Berikut file konfigurasinya (docker-compose.yml):

services:
web:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./app:/usr/share/nginx/html
NOTE

Keterangan:

  • images: nginx: alpine
    Bagian ini artinya, kita akan membuat sebuah container bernama “web” yang akan menggunakan image “nginx” versi alpine (sehingga ukurannya kecil dan ringan).
  • ports: “8000<80>
    Bagian ini artinya, kita akan mapping port 80 di container ke port 8000 di host. Artinya, kalau saya buka http://localhost:8000 di browser, sebenarnya saya sedang mengakses nginx di dalam container di port 80.
  • volumes: ./app:/usr/share/nginx/html
    Bagian ini artinya, kita akan me-mounting (memasang) folder/direktori ./app di komputer saya ke folder/direktori /usr/share/nginx/html di dalam container. Artinya, semua isi folder/direktori ./app akan langsung disajikan oleh nginx, tanpa perlu rebuild container-nya.

Seperti terlihat, file konfigurasi Docker Compose ini hanya memiliki 1 dari 3 komponen utama yang sudah dijelaskan sebelumnya, yaitu services. Meskipun demikian, Docker Compose sudah dapat berjalan karena bagian services adalah bagian paling penting dalam file konfigurasi Docker Compose.

Berikut adalah file webnya (app/index.html):

index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Docker Compose Demo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>
<h1>This is a Docker Compose Demo Page.</h1>
<p>This content is being served by an Nginx container.</p>
</body>
</html>

Berikut adalah perintah-perintah penting di Docker Compose:10

docker compose up#

Menjalankan container dari sebuah file konfigurasi:

Terminal window
docker compose up

Jika ingin berjalan di background:

Terminal window
docker compose up -d

docker compose up
docker compose up

Berjalan dengan baik di port 8000:

Docker Compose: nginx on port 8000
Docker Compose: nginx on port 8000

docker compose down#

Untuk menghentikan kontainer yang sedang berjalan:

Terminal window
docker compose down

docker compose down
docker compose down

docker compose ps#

Melihat proses yang sedang berjalan:

Terminal window
docker compose ps

docker compose ps
docker compose ps

docker compose logs#

Melihat log:

Terminal window
docker compose logs

docker compose logs
docker compose logs

NOTE

Sampai artikel ini ditulis, perintah-perintah Docker Compose di atas hanya dapat berjalan di direktori yang terdapat file konfigurasinya. Artinya, jika file konfigurasi (docker-compose.yml)-nya ada di direktori atau folder ~/Documents misalnya, sementara kalian menjalankan perintah-perintah Docker Compose tersebut di direktori lain seperti ~/Downloads, maka akan muncul error.

docker compose help#

Masih banyak perintah-perintah Docker Compose lainnya yang tidak di-cover di artikel ini. Tapi, kalian dapat mengeksplorasinya sendiri di:

Terminal window
docker compose -h # atau
docker compose help

Lazydocker#

Pernah mendengar lazygit?
Saya pernah menulis tentang lazygit di website ini lho:

{{< article link=“/tech/git/” showSummary=true compactSummary=true >}}

At A Glance#

Mirip seperti lazygit, lazydocker adalah program terpisah (non-official) berbasis CLI yang dibuat untuk “para pemalas” yang enggan mengetikkan perintah-perintah Docker dan Docker Compose di terminal. Program ini juga merupakan tool open source yang juga dibuat oleh orang yang sama yang membuat lazygit. Dengan adanya lazydocker, kita dapat memantau container kita hanya dengan satu interface sederhana ini.

Installation#

Berikut adalah cara meng-install lazydocker di beberapa sistem operasi Linux:

DistroCommand
Arch Linuxsudo pacman -Sy lazydocker
Opensusesudo zypper install lazydocker
NOTE

NixOS:
Masukkan baris berikut di file konfigurasi (/etc/nixos/configuration.nix):

environment.systemPackages = [
pkgs.lazydocker
];

Atau jika menggunakan nix-shell:

Terminal window
nix-shell -p lazydocker

Karena distro Debian/Ubuntu dan Fedora tidak menyediakan lazydocker di repository-nya, jadi, kalian yang menggunakan distro tersebut dapat mengambil binary-nya atau meng-compile-nya langsung dari repository Github lazydocker di sini:

jesseduffield
/
lazydocker
Waiting for api.github.com...
00K
0K
0K
Waiting...

Website official lazydocker: https://lazydocker.com/

lazydocker UI#

Berikut adalah tampilan (UI / User Interface) lazydocker ketika pertama kali dijalankan:

Terminal window
lazydocker

lazydocker UI
lazydocker UI

Perhatikan 3 bagian yang saya highlight tersebut: ada 2 window utama, yaitu window di sebelah kiri dan di sebelah kanan, ditambah satu bagian keybinding (shortcut) di bagian bawah.

  1. Window Kiri

Window di bagian kiri menunjukkan informasi terkait 6 hal:

  • Project: Berisi informasi tentang “Docker Project” yang ada di komputer kita, baik project yang diambil dari Docker Registry (seperti dockerhub) maupun dari Docker Compose.
  • Services: Berisi informasi tentang Services yang ada di komputer kita, berikut statusnya (running / exited).
  • Containers: Berisi informasi tentang Container yang ada di komputer kita, berikut statusnya (running / exited).
  • Images: Berisi informasi tentang Images yang ada di komputer kita, berikut dengan Tag-nya.
  • Volumes: Berisi informasi tentang Volumes yang ada di komputer kita (lokasinya di /var/lib/docker/volumes).
  • Networks: Berisi informasi tentang Networks yang ada di komputer kita.
  1. Windows Kanan

Window di bagian kanan menunjukkan informasi detail dari objek yang kita lihat di Window Kiri. Kita bisa melihat ada beberapa sub-menu-nya juga, dan sub-menu ini berbeda-beda tergantung bagian mana dari 6 bagian yang ada di Window Kiri yang sedang kita buka. Untuk berpindah sub-menu, kita bisa gunakan keybinding (shortcut): [ untuk ke kiri, dan ] untuk ke kanan.

  1. Keybind di Bawah

Bagian ini menunjukkan informasi praktis tentang cara mengoperasikan lazydocker ini, mulai dari cara melakukan scrolling, keluar dari lazydocker, melihat menu atau daftar keybinding yang tersedia, dan bernavigasi dari satu Window ke Window lainnya.

INFO

Pro Tip:

Kita juga bisa menekan tombol Shift+? di keyboard untuk melihat daftar keybinding (shortcut) yang tersedia dan dapat digunakan.

How to use#

docker ps, docker logs, docker stats, docker inspect#

Keempat perintah tersebut (docker ps, docker logs, docker stats, docker inspect) saya gabung karena memang kita dapat melakukannya dengan (sangat) mudah di lazydocker hanya dengan bernavigasi dari satu Window ke Window lainnya, dari satu sub-menu ke sub-menu lainnya. Semua itu dapat saya lakukan hanya dengan 6 buah tombol di keyboard: arrow up, arrow down, arrow right, arrow left, opening square bracket, closing square bracket.

Perhatikan tombol keyboard yang muncul di bagian bawah video!

Notes: Saya menggunakan showmethekey untuk melihat keystrokes keyboard di Wayland.

docker run, docker start, docker restart, docker stop#

Lagi-lagi, keempat perintah tersebut (docker run, docker start, docker restart, docker stop) akan saya tunjukkan dalam satu demonstrasi berikut. Sebab, memang akan sangat mudah menjalankan, menghentikan, maupaun menjalankan ulang sebuah container melalui lazydocker ini. Semua itu dapat saya lakukan hanya dengan menekan tombol capital S, s, dan r.

Perhatikan tombol keyboard yang muncul di bagian bawah video!

Untuk bagian Images, Volumes, dan Networks tidak saya bahas di sini, selain karena tidak banyak yang dapat ditunjukkan selain menghapus-hapus Images/Volumes/Networks, juga karena membuat video demonstrasi ini memakan storage yang lumayan besar (1 video berkisar 1 menit bisa berukuran 3-4 MB!). Oleh karena itu, jika kalian sudah paham dasar-dasar pengoperasian lazydocker, kalian bisa mencoba mengeksplorasi bagian-bagian tersebut sendiri!

Oiya, beberapa kekurangan lazydocker yang saya jumpai, terutama terkait dengan perintah-peritah dasar Docker, rupanya, ada beberapa perintah dasar Docker yang belum bisa dilakukan di lazydocker, misalnya seperti:

  • men-download image: docker pull
  • login ke Docker Registry: docker login
  • membuat volumes & networks: docker volume create & docker network create

Sehingga, kita masih memerlukan perintah-perintah manual Docker untuk melakukan operasi tersebut.

Sekian dulu totorial docker dan lazydocker ini.
Terima kasih. Sampai jumpa di artikel saya yang lain!

Footnotes#

  1. https://www.dicoding.com/blog/apa-itu-docker/

  2. https://docs.docker.com/get-started/docker-overview/

  3. https://en.wikipedia.org/wiki/Docker_(software)

  4. https://www.docker.com/resources/what-container/

  5. https://en.wikipedia.org/wiki/Virtual_machine

  6. https://www.ibm.com/think/topics/containers

  7. https://docs.docker.com/engine/install/linux-postinstall/

  8. https://www.geeksforgeeks.org/devops/docker-instruction-commands/

  9. https://www.coursera.org/collections/docker-cheat-sheet

  10. https://docs.docker.com/compose/ 2

  11. https://dev.to/alexmercedcoder/a-deep-dive-into-docker-compose-27h5

  12. https://strapi.io/blog/what-is-docker-compose-all-you-need-to-know

  13. https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04

Support & Share

If this article helped you, please share or support!

Sponsor
Docker: A Powerful Containerization Platform (+ Lazydocker)
https://shangdi.github.io/posts/tech/docker/
Author
Wildan
Published at
2026-04-13

Comments

Profile Image of the Author
Wildan
Welcome! Wildan-desu.
Announcemenet
Welcome to my blog! Enjoy exploring ~
Categories
Tags
Latest Moments
Site Statistics
Posts
111
Categories
90
Tags
316
Total Words
576,048
Running Days
0 days
Last Activity
0 days ago
Site Info
Build Platform
GitHub Actions
Blog Version
Firefly v6.15.10
License
CC BY-NC-SA 4.0