Kamis, 16 Juli 2026

Rclone HTTP Mount untuk Jellyfin

Membuat Link Film Online Menjadi Library Lokal Jellyfin dengan Rclone

Dokumen ini menjelaskan cara membuat folder film online menjadi seperti folder lokal agar bisa dibaca oleh Jellyfin tanpa harus mendownload seluruh koleksi film.

1. Konsep Sederhana

Alur sistem:

Website Film (Index MKV)
          |
          |
       Rclone HTTP
          |
          |
 Folder Lokal Virtual
          |
          |
       Jellyfin

Jellyfin tidak membaca internet secara langsung. Jellyfin hanya membaca folder lokal yang dibuat oleh rclone.

2. Membuat Remote Rclone

Masuk konfigurasi rclone:

rclone config

Pilih:

  • New remote
  • Nama remote: eleaar
  • Storage: HTTP
  • URL: alamat folder film

Contoh hasil konfigurasi:

[eleaar]
type = http
url = https://perso.eleaar.fr/serveur/films/Par genre (AllocinΓ©)/

3. Mengecek Remote

Tes apakah rclone bisa membaca isi folder:

rclone ls eleaar: --no-check-certificate

Jika berhasil akan muncul daftar film:

Fantastique/Harry Potter.mkv
Science-fiction/Star Wars.mkv
Action/Matrix.mkv

4. Membuat Folder Mount

Buat lokasi yang akan dibaca Jellyfin:

mkdir -p /mnt/NAStb/Media/WebMovies

Folder ini menjadi pintu masuk ke koleksi film online.

5. Tes Mount Manual

rclone mount eleaar: /mnt/NAStb/Media/WebMovies \
--allow-other \
--vfs-cache-mode writes \
--dir-cache-time 12h \
--no-check-certificate

Cek isi folder:

ls /mnt/NAStb/Media/WebMovies

Jika muncul folder genre film berarti berhasil.

6. Membuat Service Otomatis

Agar mount aktif otomatis setelah restart server, buat service:

nano /etc/systemd/system/rclone-webmovies.service
Isi:
[Unit]
Description=Rclone WebMovies Mount
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root

ExecStart=/usr/bin/rclone mount eleaar: /mnt/NAStb/Media/WebMovies \
--allow-other \
--vfs-cache-mode writes \
--dir-cache-time 12h \
--no-check-certificate

ExecStop=/bin/fusermount -u /mnt/NAStb/Media/WebMovies

Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

7. Mengaktifkan Service

systemctl daemon-reload

systemctl enable rclone-webmovies

systemctl start rclone-webmovies

Cek status:

systemctl status rclone-webmovies --no-pager
Jika berhasil:
Active: active (running)

8. Hubungan dengan Jellyfin Docker

Pada setup ini Jellyfin sudah membaca:

Host:
 /mnt/NAStb/Media

Container:
 /media

Maka folder rclone otomatis terlihat oleh Jellyfin:

/media/WebMovies

Saat membuat Library Jellyfin:

Dashboard
    |
Libraries
    |
Add Media Library
    |
Movies
    |
Folder:
/media/WebMovies

9. Menambah Sumber Film Baru

Untuk URL film baru, langkahnya selalu sama:

  1. Buat remote rclone baru.
  2. Tes dengan rclone ls.
  3. Buat folder mount baru.
  4. Buat service baru dengan nama berbeda.
  5. Tambahkan folder tersebut ke Jellyfin.

Contoh:

eleaar
 |
 /media/WebMovies


serverfilm2
 |
 /media/WebMovies2

Kesimpulan

Dengan rclone, server Armbian tidak perlu menyimpan semua film. Rclone hanya membuat "jembatan" antara internet dan Jellyfin.

Hasil akhirnya:

URL Film Online
        |
      Rclone
        |
 Folder Virtual Lokal
        |
     Jellyfin
        |
 Streaming

Rangkuman Troubleshooting Rclone HTTP Mount untuk Jellyfin Docker

Masalah Awal

Jellyfin hanya menampilkan library WebMovies tetapi tidak menemukan folder maupun film.

Kondisi awal:

Host:
 /mnt/NAStb/Media/WebMovies

Folder film dapat diakses langsung dari host, contoh:

ls /mnt/NAStb/Media/WebMovies/Fantastic

Namun Jellyfin tidak menampilkan isi folder.

Pemeriksaan Awal

1. Jellyfin bukan service systemd

systemctl status jellyfin

Output:
Unit jellyfin.service could not be found.

Kesimpulan: Jellyfin berjalan menggunakan Docker.

2. Container Jellyfin ditemukan

docker ps

Container:
jellyfin/jellyfin:latest
Nama:
jellyfin

Pemeriksaan Docker Mount

Hasil:

docker inspect jellyfin --format '{{json .Mounts}}'

[
 {
  "Source":"/mnt/NAStb/Media",
  "Destination":"/media"
 }
]

Artinya:

Host Container Jellyfin
/mnt/NAStb/Media /media

Masalah Ditemukan

Saat masuk ke container:

docker exec -it jellyfin bash

Path host tidak tersedia:

ls /mnt/NAStb/Media/WebMovies

No such file or directory

Karena container hanya mengenal:

/media/WebMovies

Penyebab Utama

Docker Jellyfin sudah berjalan ketika rclone mount belum aktif.

Akibatnya bind mount Docker mengarah ke folder kosong.

Solusi Sementara

Restart container Jellyfin:

docker restart jellyfin

Setelah restart:

docker exec -it jellyfin bash

ls -la /media/WebMovies

Hasil:

Action
Animation
Aventure
Fantastique
Science-fiction
Drama
Thriller
...

Jellyfin akhirnya dapat melihat folder rclone.

Solusi Permanen

Membuat systemd memastikan:

  1. rclone mount aktif lebih dahulu
  2. Docker berjalan setelah rclone siap
  3. Jellyfin otomatis membaca mount setelah reboot

Service Rclone Saat Ini

systemctl cat rclone-webmovies.service
[Unit]
Description=Rclone WebMovies Mount
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root

ExecStart=/usr/bin/rclone mount eleaar: /mnt/NAStb/Media/WebMovies \
--allow-other \
--vfs-cache-mode writes \
--dir-cache-time 12h \
--no-check-certificate

Restart=always
RestartSec=10

Dependency Rclone ke Docker

Override dibuat:

/etc/systemd/system/rclone-webmovies.service.d/override.conf
Isi:
[Unit]
Before=docker.service

Dependency Docker ke Rclone

Override Docker dibuat:

/etc/systemd/system/docker.service.d/rclone.conf
Isi:
[Unit]
Requires=rclone-webmovies.service
After=rclone-webmovies.service

Status Saat Ini

Pengecekan:

systemctl status docker.service
Menunjukkan:
Drop-In:
/etc/systemd/system/docker.service.d
 └─ override.conf, rclone.conf

Artinya systemd sudah membaca dependency Docker terhadap rclone.

Langkah Berikutnya

Sebelum reboot lakukan pengecekan:

cat /etc/systemd/system/docker.service.d/rclone.conf
Harus:
[Unit]
Requires=rclone-webmovies.service
After=rclone-webmovies.service

Kemudian cek:

systemctl list-dependencies docker.service | grep rclone
Target:
rclone-webmovies.service

Dan pastikan:

systemctl is-enabled rclone-webmovies.service
Target:
enabled

Kesimpulan

  • Masalah bukan permission user Jellyfin.
  • Jellyfin berjalan di Docker.
  • rclone mount sudah benar dengan --allow-other.
  • Masalah utama adalah urutan startup: Docker berjalan sebelum rclone mount siap.
  • Solusi permanen: membuat dependency systemd antara rclone dan Docker.

Jumat, 30 Januari 2026

Biomekanikal

Rahasia Load Balancing Tubuh: Mengapa Berkuda & Panahan Jadi Solusi Raga "Miring"?

Bukan Sekadar Hobi, Ini Penjelasan Ilmiah Mengapa Raga Perlu "Load Balancing"

Pernahkah Anda merasa tubuh terasa kencang sebelah? Atau mungkin bahu kiri dan kanan tidak simetris tingginya? Jika Anda penggemar badminton, golf, atau sering menggendong tas di satu sisi, raga Anda mungkin sedang mengalami kondisi "terpelintir".

"Tubuh manusia diciptakan simetris, namun aktivitas modern seringkali memaksanya bekerja secara asimetris."

Bahaya Otot Kencang Sebelah bagi Aliran Darah

Saat satu sisi tubuh lebih dominan (seperti saat smash di badminton atau swing di golf), otot di sisi tersebut akan memendek dan kaku. Secara ilmiah, otot yang terlalu kencang akan menekan pembuluh darah kapiler. Akibatnya, distribusi oksigen dan asupan nutrisi ke sel-sel tubuh menjadi tidak merata.

Kaitan dengan Kelenjar Getah Bening

Sistem limfatik (getah bening) tidak memiliki pompa seperti jantung. Cairan ini bergerak murni karena kontraksi otot. Jika tubuh Anda "melintir" atau kaku, aliran getah bening akan terhambat (stagnasi). Inilah yang sering menyebabkan rasa pegal menahun hingga pembengkakan kelenjar di area tertentu karena sisa metabolisme yang mampet.

Berkuda: Solusi "Load Balancing" Raga yang Alami

Bagi anggota komunitas seperti FESPATI, berkuda bukan sekadar olahraga tradisi. Saat melakukan posisi trot (lari kecil), tubuh secara otomatis melakukan kalibrasi ulang:

  • Simetri Sempurna: Anda tidak bisa berkuda dengan posisi miring, atau kuda akan kehilangan keseimbangan. Ini memaksa otak menyelaraskan otot kiri dan kanan secara instan.
  • Pijat Limfatik: Guncangan ritmis saat berkuda bertindak sebagai pompa alami bagi kelenjar getah bening di seluruh tubuh.
  • De-kompresi Tulang Belakang: Gerakan naik-turun membantu mengembalikan posisi ruas tulang yang terpelintir akibat olahraga rotasional.
Kesimpulan: Untuk menjaga raga tetap "manunggal" dan sehat, seimbangkan olahraga asimetris Anda dengan aktivitas yang melatih titik tengah (center) seperti berkuda dan panahan tradisional.

© 2026 Artikel Kesehatan Raga & Tradisi | Terinspirasi dari Filosofi FESPATI

Rabu, 14 Januari 2026

Menurunkan kadar gula darah

Cara Menurunkan Kadar Gula Darah

1. Atur Pola Makan

  • Kurangi gula dan karbohidrat sederhana (nasi putih berlebihan, roti putih, minuman manis).
  • Pilih karbohidrat kompleks: nasi merah, oatmeal, ubi, kentang rebus.
  • Perbanyak serat: sayur hijau, kacang-kacangan, buah rendah gula (apel, pir, beri).
  • Konsumsi protein sehat: ikan, telur, tahu, tempe, dada ayam.
  • Gunakan lemak sehat: alpukat, minyak zaitun, kacang.

2. Makan Teratur & Porsi Terkontrol

  • Jangan melewatkan makan.
  • Makan dengan porsi kecil tapi teratur untuk mencegah lonjakan gula darah.

3. Rutin Berolahraga

  • Jalan kaki 30 menit setiap hari.
  • Bersepeda, berenang, senam, atau yoga.
  • Aktivitas ringan 10–15 menit setelah makan.

4. Jaga Berat Badan Ideal

Penurunan berat badan 5–10% dapat membantu mengontrol gula darah.

5. Kelola Stres & Tidur Cukup

Stres dan kurang tidur dapat meningkatkan gula darah. Lakukan relaksasi dan tidur cukup.

6. Minum Air Putih Cukup

Membantu ginjal membuang kelebihan gula melalui urine.

7. Pantau Gula Darah

Periksa gula darah secara rutin untuk mengetahui respon tubuh.

8. Konsumsi Obat Sesuai Anjuran Dokter

Jangan menghentikan atau mengganti obat tanpa konsultasi dokter.

9. Bahan Alami (Pendukung)

  • Kayu manis
  • Pare
  • Daun insulin
  • Teh hijau
Catatan: Bahan alami hanya sebagai pendamping, bukan pengganti obat medis.

Kamis, 04 September 2025

Ngeprint dengan STB Box HG680P

Ketika Perangkat Bekas Jadi Penyelamat Cetak

Di pojok ruangan, sebuah STB HG680P yang dulu hanya menayangkan acara TV kini punya peran baru — sebagai server cetak. Ya, perangkat mungil berbasis ARM ini, jika diisi sistem yang tepat, bisa menjelma jadi otak pusat yang memungkinkan printer seperti Epson L3210 bekerja lewat jaringan. Tanpa PC. Tanpa ribet.

Artikel ini membahas bagaimana cara menghidupkan kembali STB bekas jadi print server berbasis Armbian, dilengkapi dengan antarmuka CasaOS, dan mengintegrasikannya dengan CUPS (Common Unix Printing System).

πŸ”§ Modal Awal: Persiapan Sebelum Ngegas

  • STB HG680P yang sudah diinstal Armbian (Debian-based)
  • Printer Epson L3210 (via USB)
  • Koneksi LAN atau WiFi
  • Driver printer yang sesuai
  • Keberanian dan sedikit rasa penasaran πŸ˜„

πŸ“¦ Langkah 1: Install CUPS, Sang Pengatur Cetak

CUPS adalah sistem pencetakan di Unix/Linux. Dialah jembatan antara sistem operasi dan printer. Jalankan ini di terminal STB:

sudo apt update
sudo apt install cups -y

🌐 Langkah 2: Buka Akses Web CUPS

Secara default, CUPS hanya bisa diakses dari localhost. Kita ubah agar bisa diakses dari jaringan.

Edit file /etc/cups/cupsd.conf dan pastikan baris berikut diatur:

Port 631

Lalu di bagian <Location /> ubah jadi:

<Location />
  Order allow,deny
  Allow all
</Location>

Simpan, lalu restart:

sudo systemctl restart cups

🧭 Langkah 3: Akses Web Interface CUPS

Buka browser di perangkat lain dan akses:
http://192.168.1.xx:631
Gantilah “xx” dengan IP STB kamu.

πŸ”Œ Langkah 4: Sambungkan Printer ke STB

Colokkan printer ke port USB STB. Kalau semua berfungsi, printer akan muncul saat klik Add Printer di web CUPS.

Jika belum muncul, periksa dengan perintah lsusb atau lpinfo -v untuk memastikan printer terdeteksi.

πŸ–¨️ Langkah 5: Instal Driver Printer (ESC/P-R)

Epson L3210 menggunakan protokol ESC/P-R. Untungnya, driver open-source-nya tersedia di repo Debian:

sudo apt install printer-driver-escpr -y
sudo systemctl restart cups

Setelah itu, ulang proses Add Printer dan pilih driver Epson L3210 Series - epson-escpr.

πŸ§ͺ Langkah 6: Uji Cetak

Setelah konfigurasi selesai, klik "Print Test Page". Jika printer berbunyi, itu tanda bahwa semua bekerja seperti yang diharapkan.

πŸͺŸ Langkah 7: Akses dari Windows

Kalau kamu ingin ngeprint dari PC Windows melalui jaringan:

  1. Aktifkan printer sharing di CUPS
  2. Install Samba:
    sudo apt install samba -y
  3. Edit /etc/samba/smb.conf dan tambahkan:
    [printers]
       comment = All Printers
       path = /var/spool/samba
       browseable = yes
       guest ok = yes
       writable = no
       printable = yes
  4. Restart Samba:
    sudo systemctl restart smbd

Di Windows, tekan Win + R, lalu ketik: \\192.168.1.xx
Klik kanan printer → Connect → Install driver → Siap ngeprint!

πŸͺ„ Penutup: STB yang Menyala Kembali

Di tangan yang tepat, perangkat tua bukan untuk dibuang — melainkan diberdayakan. Dengan STB HG680P, kita bisa membuat server cetak hemat energi, minim biaya, dan maksimal fungsinya. Cocok buat warnet, kantor kecil, atau bahkan sekadar sebagai "printer keluarga" di rumah.

Semoga tutorial ini membantumu menghidupkan kembali si STB mungil yang dulu tak lebih dari kotak hitam berdebu. Siapa sangka, kini dia bisa jadi pahlawan cetak di jaringan rumahmu.


Ditulis sambil ngopi dan ngelirik indikator toner printer.

Sabtu, 23 Agustus 2025

Setup Server FTP & Samba di Armbian HG680P – Skrip Otomatis Lengkap

Berikut ini adalah skrip bash otomatis untuk membuat server FTP dan Samba v2.1 di Armbian HG680P. Sangat cocok untuk pemula, hanya dengan satu perintah semuanya langsung siap digunakan.

πŸ“¦ Fitur Skrip

  • Install vsftpd dan samba
  • Membuat user admin dengan password admin123
  • Setup direktori /mnt/cloudy
  • Konfigurasi layanan dan membuka firewall
  • Enable layanan agar aktif otomatis saat boot

🧾 Skrip Bash Lengkap

#!/bin/bash

echo "=== Mulai setup FTP & Samba di Armbian ==="

# 1. Update & install paket
sudo apt update
sudo apt install -y vsftpd samba

# 2. Buat user admin dengan password admin123
echo "[+] Membuat user admin..."
sudo useradd -m admin
echo "admin:admin123" | sudo chpasswd

# 3. Setup direktori /mnt/cloudy
echo "[+] Menyiapkan direktori /mnt/cloudy..."
sudo mkdir -p /mnt/cloudy
sudo chown admin:admin /mnt/cloudy
sudo chmod 775 /mnt/cloudy
sudo usermod -d /mnt/cloudy admin

# 4. Konfigurasi FTP (vsftpd)
echo "[+] Mengkonfigurasi vsftpd..."
sudo bash -c 'cat > /etc/vsftpd.conf <> /etc/samba/smb.conf </dev/null 2>&1; then
  echo "[+] Membuka port firewall..."
  sudo ufw allow 21/tcp
  sudo ufw allow Samba
fi

echo "✅ Selesai! FTP dan Samba sudah aktif."
echo "→ Username: admin"
echo "→ Password: admin123"
echo "→ Folder: /mnt/cloudy"

πŸš€ Cara Menjalankan Skrip

  1. Simpan file ini sebagai setup-ftp-samba.sh
  2. Jalankan perintah berikut di Armbian kamu:
    chmod +x setup-ftp-samba.sh
    ./setup-ftp-samba.sh

πŸ“ˆ Tips SEO dan Optimasi

Gunakan kata kunci seperti FTP Armbian HG680P, Samba Raspberry Pi, dan Linux File Server Tutorial agar artikel ini muncul di pencarian Google. Artikel ini bisa disebar di forum komunitas Linux, GitHub, atau blog pribadi.

Perbandingan Python3 vs Bash

1. Mana yang Terbaik?

Tergantung kebutuhan:

  • Bash lebih baik untuk automation sederhana, tugas sistem, dan skrip shell seperti copy file, looping file, dll.
  • Python3 lebih baik untuk logika kompleks, manipulasi data, web scraping, API, machine learning, dll.

Kesimpulan: Jika hanya menjalankan perintah sistem, Bash cukup. Jika membutuhkan logika lebih kompleks dan pustaka tambahan, gunakan Python3.

2. Cara Menjalankan Skrip

a. Menjalankan Skrip Bash

# Contoh isi file: script.sh
#!/bin/bash
echo "Halo dari Bash"
  

Perintah menjalankan:

chmod +x script.sh
./script.sh

b. Menjalankan Skrip Python3

# Contoh isi file: script.py
#!/usr/bin/env python3
print("Halo dari Python")
  

Perintah menjalankan:

chmod +x script.py
./script.py

Atau langsung:

python3 script.py

3. Kapan Menggunakan Keduanya?

Dalam proyek nyata, kadang keduanya digunakan bersama: Bash untuk automasi sistem, dan Python untuk pemrosesan data.

Tendang Saudara Kembar

Dalam dunia digital, duplikat file adalah hal yang sering terjadi — dan tanpa disadari bisa memenuhi ruang penyimpanan dengan cepat. File yang sama bisa tersebar di berbagai direktori, dengan nama berbeda, tapi isi identik. Di sinilah Python hadir sebagai "penendang saudara kembar".

Dengan pendekatan yang efisien dan sederhana, script Python berikut ini dirancang untuk:

  • Memindai seluruh file dalam beberapa direktori sumber
  • Mengidentifikasi file duplikat berdasarkan hash MD5
  • Memindahkan file duplikat ke satu direktori pusat
  • Melog semua aktivitas ke file CSV

Berikut adalah implementasi Python-nya menggunakan multithreading untuk mempercepat proses hashing file:

import os
import hashlib
import shutil
import csv
from concurrent.futures import ThreadPoolExecutor, as_completed

SOURCE_DIRS = ["/mnt/data", "/mnt/video", "/mnt/photo", "/mnt/home"]
TARGET_DIR = "/mnt/cloudy/rara"
LOG_FILE = os.path.join(TARGET_DIR, "duplikat_log.csv")
EXTENSIONS = {'.jpg', '.png', '.mp4', '.rar', '.zip', '.img', '.psd', '.cdr', '.iso', '.exe', '.apk'}
MAX_WORKERS = 8  # jumlah thread paralel

def ensure_target_dir():
    os.makedirs(TARGET_DIR, exist_ok=True)

def file_hash(path, block_size=65536):
    hasher = hashlib.md5()
    try:
        with open(path, 'rb') as f:
            while chunk := f.read(block_size):
                hasher.update(chunk)
        return hasher.hexdigest()
    except Exception as e:
        print(f"Gagal hash: {path} | {e}")
        return None

def is_valid_extension(filename):
    return os.path.splitext(filename)[1].lower() in EXTENSIONS

def collect_files():
    all_files = []
    for root_dir in SOURCE_DIRS:
        for root, _, files in os.walk(root_dir):
            for file in files:
                full_path = os.path.join(root, file)
                if is_valid_extension(file):
                    all_files.append(full_path)
    return all_files

def process_files():
    ensure_target_dir()
    seen_hashes = {}
    all_files = collect_files()
    print(f"Total file: {len(all_files)}")

    with open(LOG_FILE, "w", newline='') as log_file:
        writer = csv.writer(log_file)
        writer.writerow(["original_path", "duplicate_path", "md5", "size"])

        with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
            future_to_file = {executor.submit(file_hash, file): file for file in all_files}

            for idx, future in enumerate(as_completed(future_to_file)):
                file = future_to_file[future]
                try:
                    hash_val = future.result()
                    if not hash_val:
                        continue
                except Exception as e:
                    print(f"Error file: {file} | {e}")
                    continue

                file_size = os.path.getsize(file)

                if hash_val in seen_hashes:
                    original = seen_hashes[hash_val]
                    relative_path = os.path.relpath(file, '/')
                    target_path = os.path.join(TARGET_DIR, relative_path)
                    os.makedirs(os.path.dirname(target_path), exist_ok=True)
                    try:
                        shutil.move(file, target_path)
                        writer.writerow([original, file, hash_val, file_size])
                        print(f"Duplikat dipindahkan: {file}")
                    except Exception as e:
                        print(f"Gagal memindahkan: {file} | {e}")
                else:
                    seen_hashes[hash_val] = file

                if idx % 100 == 0:
                    print(f"Proses {idx}/{len(all_files)} file selesai")

    print(f"Selesai. Log di: {LOG_FILE}")

if __name__ == "__main__":
    process_files()
Catatan:
Kamu dapat menyesuaikan jumlah thread melalui variabel MAX_WORKERS, dan mengubah SOURCE_DIRS sesuai struktur direktori kamu.

Dengan script ini, saudara kembar digital tak diundang akan segera terdeteksi dan dipindahkan. Simpel, aman, dan cepat. Python pun berhasil menjalankan tugasnya sebagai penegak "ketertiban file" di jagat penyimpananmu.