Skip to content

Nabilah-26/linkding-kdjk9

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 

Repository files navigation

Project KDJK Kel9 P1

Aplikasi Web "LINKDING"

Sekilas Tentang Linkding

Linkding adalah sebuah aplikasi bookmark manager berbasis web yang gratis dan open-source. Aplikasi ini dikembangkan untuk membantu pengguna menyimpan, mengelola, serta mengakses tautan favorit mereka dengan mudah dan efisien. Nama “Linkding” berasal dari gabungan kata link (tautan) dan ding (sebuah kata dalam bahasa jerman yang berarti “benda”), yang menggambarkan fungsinya sebagai alat untuk mengorganisasi tautan. Linkding juga mendukung impor dan ekspor bookmark dalam format HTML Netscape, serta bisa diakses melalui ekstensi peramban, bookmarklet, REST API, maupun diinstal sebagai Progressive WebApp (PWA). Linkding menjadi solusi ideal bagi siapa pun yang ingin menjaga koleksi tautan tetap teratur, aman, dan mudah diakses.

Instalasi

🚀 Panduan Deploy Linkding di Railway

Langkah 1 Langkah 2

  1. Buka situs railway.com, kemudian tekan Sign In di kanan atas.
  2. Lakukan Sign In menggunakan akun GitHub atau Email.

Langkah 3 Langkah 4

  1. Setelah berhasil masuk, buka Dashboard di kanan atas.
  2. Tekan tombol Create New Project.

Langkah 5 Langkah 6

  1. Pilih opsi Docker Image.
  2. Masukkan sissbruecker/linkding:1.44.1-plus-alpine sebagai sumber image Linkding.

Langkah 7 Langkah 8

  1. Tunggu hingga Railway memuat Docker image Linkding.

    Isi image yang diunduh terdiri dari:

    • Python runtime
    • Kode Django Linkding
    • Dependency (library Python)
    • Entrypoint script (/entrypoint.sh)

    Setelah selesai, Railway akan menjalankan image tersebut di dalam container sandbox miliknya.

  2. Setelah image berhasil dimuat, buka tab Variables.

Langkah 9 Langkah 10

  1. Tekan tombol Raw Editor.

  2. Masukkan environment variable berikut:

    PORT="9090"
    LD_BIND_ADDRESS="0.0.0.0"
    LD_PORT="$PORT"
    LD_SUPERUSER_NAME="kelompok9"
    LD_SUPERUSER_PASSWORD="987654321"

Langkah 11 Langkah 12

  1. Tekan tombol Update Variables (berwarna biru). Railway membuat container baru dari image tersebut dan memasukkan semua environment variables (yang diisi di raw editor dalam env) ke dalam konteks runtime container. Ketika container hidup, docker image akan menjalanka entrypoint. Dalam linkding entrypointnya berisi:
#!/bin/sh
set -e

echo "Running database migrations..."
python manage.py migrate --noinput

echo "Creating initial superuser if not exists..."
python manage.py createinitialsuperuser

echo "Collecting static files..."
python manage.py collectstatic --noinput

echo "Starting application..."
gunicorn linkding.wsgi:application --bind 0.0.0.0:${LD_PORT:-9090}
  • set -e → menghentikan eksekusi jika ada perintah yang gagal.
  • python manage.py migrate → menjalankan migrasi database. Ketika migrasi dijalankan, Django membuat tabel seperti ini sebagai database internal linkding sesuai file: linkding/bookmarks/models.py
    from django.db import models
    
    class Bookmark(models.Model):
      url = models.URLField()
      title = models.CharField(max_length=255)
      description = models.TextField(blank=True)
      date_added = models.DateTimeField(auto_now_add=True)
  • createinitialsuperuser → membuat akun admin pertama secara otomatis. Railway akan menjalankan kode dari file: linkding/bookmarks/management/commands/create_initial_superuser.py
    from django.contrib.auth import get_user_model
    from django.core.management.base import BaseCommand
    import os
    
    class Command(BaseCommand):
      def handle(self, *args, **options):
          User = get_user_model()
          username = os.getenv('LD_SUPERUSER_NAME')
          password = os.getenv('LD_SUPERUSER_PASSWORD')
    
          if not User.objects.filter(username=username).exists():
              User.objects.create_superuser(username=username, password=password)
              self.stdout.write(f"Superuser {username} created.")
  • collectstatic → mengumpulkan file statis Django. Semua file statis (CSS, JS, gambar) dari semua app Django dikumpulkan ke folder /staticfiles. Contoh di kode settings.py:
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
  • gunicorn ... → menjalankan server aplikasi Linkding. Setelah setup selesai, image menjalankan server produksi Gunicorn, bukan runserver bawaan Django (yang hanya untuk development). Kode yang dijalankan Gunicorn berasal dari linkding/wsgi.py:
import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'linkding.settings')
application = get_wsgi_application()

Fungsi get_wsgi_application():

  • Membuat instance WSGI Application Django (objek Python callable).
  • Gunicorn akan memanggil objek ini setiap kali ada request HTTP masuk.
  1. Setelah di-update, akan muncul notifikasi di kiri atas.

Langkah 13 Langkah 14

  1. Tekan tombol Deploy pada notifikasi tersebut untuk menyimpan perubahan.
  2. Setelah proses deploy selesai, buka tab Settings.

Langkah 15 Langkah 16

  1. Pada bagian Networking, tekan tombol Generate Domain untuk membuat link situs.
    Railway secara otomatis membaca variabel PORT (atau LD_PORT) dan membuat network mapping: [Public URL] → [Container IP:PORT]
    Contoh: https://linkding-production-d3b0.up.railway.app → 172.17.0.3:9090
    Railway menggunakan reverse proxy (seperti Nginx internal) untuk meneruskan traffic dari domain ke container Gunicorn.
  2. Link Hosting Linkding berhasil dideploy!
    Saat link dibuka:
  • Browser mengirimkan HTTP request ke Railway:
    GET / HTTP/1.1
    Host: linkding-production-d3b0.up.railway.app
  • Railway Proxy menerima request itu, lalu meneruskannya ke container aplikasi (port 9090).
  • Gunicorn (server WSGI) menerima request dari proxy dan meneruskan ke: linkding.wsgi.application
  • Django memproses request: Mengecek urls.py → menemukan bahwa URL / diarahkan ke bookmark_list().
  • View Function (views.py) dijalankan: Mengambil semua data dari model Bookmark & mengirim data tersebut ke template bookmarks/bookmark_list.html.
  • Template Engine membuat halaman HTML berdasarkan data bookmark.
  • Response dikirim kembali ke browser → halaman utama Linkding berisi daftar bookmark muncul.

Fitur/Penggunaan App

image

Login Page

Pada halaman ini terdapat dua input utama dan satu tombol aksi:

  • Username – digunakan untuk memasukkan nama pengguna (contoh: rifat).
  • Password – kolom untuk memasukkan kata sandi.
  • Tombol Login – mengeksekusi proses autentikasi agar pengguna bisa masuk ke sistem.
image ### Homepage 1. Bookmark

“tugassss” dan “nala” adalah dua bookmark yang berhasil ditambahkan oleh pengguna. Masing-masing bookmark memiliki tag berbeda (#2 dan #nala) untuk mengelompokkan topik. Setiap bookmark bisa:

  • View: membuka link di tab baru.
  • Edit: mengubah judul, tag, atau deskripsi.
  • Archive: menandai link agar tidak tampil di daftar utama.
  • Remove: menghapus link dari sistem.

Ini menunjukkan bahwa fungsi CRUD (Create, Read, Update, Delete) dalam aplikasi Linkding berjalan normal.

  1. Kolom pencarian (search)

“Search for words or #tags” disini pengguna bisa mengetik kata kunci atau tag seperti “tugas” atau “#2” untuk memfilter bookmark tertentu. Fitur ini membantu pengguna menemukan link dengan cepat tanpa harus scroll panjang.

  1. Tags (kanan bawah)

Terdapat dua tag aktif:

  • 2
  • Nala

Tag ini muncul otomatis dari setiap bookmark yang dibuat. Klik salah satu tag (misalnya “2”), maka aplikasi hanya menampilkan bookmark dengan tag tersebut. Fungsi tag ini mirip seperti “kategori” di aplikasi pencatat atau bookmark online lainnya seperti Pocket atau Raindrop.

  1. Bundles (kanan atas)

Di sini muncul satu bundle bernama “nala”. Bundle digunakan untuk mengelompokkan beberapa tag menjadi satu grup besar. Contohnya, bundle “Kuliah” bisa berisi tag #tugas, #referensi, dan #deadline. Ini memudahkan pengguna untuk mengelola banyak tag sekaligus.

  1. Navigasi dan antarmuka

Di bawah daftar bookmark ada navigasi: “Previous | 1 | Next” Menandakan bahwa aplikasi sudah siap menampilkan bookmark dalam jumlah banyak dengan sistem pagination (halaman 1, 2, dst). Tombol di bagian atas:

  • Add Bookmark: untuk menambah data baru.
  • Settings: mengatur preferensi aplikasi (seperti API key, tampilan, dan backup data).
  • Logout: keluar dari akun pengguna.
image image

Add bookmark

Halaman ini digunakan untuk menyimpan link atau tautan penting agar mudah diakses kembali di kemudian hari. Fungsinya mirip seperti “Save” atau “Bookmark” di browser, tetapi Linkding menyimpannya dalam satu sistem terorganisir, bisa diberi tag, deskripsi, dan status baca (read/unread).

  1. URL

Kolom ini untuk menuliskan alamat situs web yang ingin disimpan. Setelah disimpan, Linkding akan menampilkan tautan tersebut di daftar bookmark.

  1. Tags

Berfungsi memberi kategori atau label pada setiap bookmark. Tag membantu pengguna mengelompokkan dan mencari link dengan cepat. Ditulis tanpa tanda pagar (#), lalu cukup pisahkan dengan spasi.

Contoh: kuliah referensi kdjk

Maka Linkding akan otomatis membuat tag kuliah, referensi, dan kdjk.

  1. Title

Judul dari link yang disimpan. Bisa otomatis diambil dari situs, atau diketik manual. Judul memudahkan identifikasi isi link tanpa harus membukanya.

  1. Description

Tempat untuk menuliskan penjelasan singkat tentang isi link atau alasan menyimpannya.

  1. Notes (opsional)

Dapat digunakan untuk menambahkan catatan pribadi seperti ringkasan atau ide penting dari link tersebut.

  1. Mark as Unread

Jika dicentang, link akan ditandai sebagai belum dibaca (unread). Linkding menyediakan filter agar pengguna bisa menampilkan hanya link yang belum dibaca.

  1. Tombol Save & Cancel
  • Save → Menyimpan link ke dalam sistem Linkding.
  • Cancel → Membatalkan proses penyimpanan dan kembali ke halaman sebelumnya.
image

Menu bookmarks

berfungsi untuk mengelola dan memfilter tautan (link) yang sudah disimpan oleh pengguna.

  1. Active

Menampilkan semua bookmark yang masih aktif atau belum diarsipkan. Ini adalah tampilan utama yang biasa digunakan untuk melihat semua link yang masih relevan.

Contoh penggunaan: pengguna baru saja menyimpan artikel penting untuk tugas kuliah, dan ingin melihatnya lagi di daftar utama.

  1. Archived

Berisi bookmark yang sudah disimpan tetapi tidak lagi dibutuhkan secara aktif. Cocok untuk menjaga tampilan utama tetap rapi tanpa menghapus link lama. Bookmark yang diarsipkan masih bisa dikembalikan ke status aktif jika dibutuhkan.

Contoh penggunaan: Artikel yang sudah selesai dibaca atau digunakan dalam proyek, tetapi tetap ingin disimpan sebagai referensi.

  1. Unread

Menampilkan bookmark yang sudah disimpan namun belum dibaca atau dibuka oleh pengguna. Fitur ini memudahkan pengguna untuk menyortir link yang perlu ditinjau nanti.

Contoh penggunaan: Pengguna menandai beberapa artikel riset dengan “Mark as unread” supaya mudah ditemukan untuk dibaca nanti.

  1. Untagged

Menampilkan semua bookmark yang belum memiliki tag (belum dikategorikan). Berguna untuk melakukan pengelolaan ulang agar semua link punya kategori/tag yang sesuai.

Contoh penggunaan: Setelah menyimpan banyak link cepat-cepat, pengguna bisa buka menu ini untuk menambahkan tag pada yang belum dikategorikan.

Kelebihan Linkding

  1. Open-source dan gratis – Linkding dapat dimanfaatkan tanpa pembayaran lisensi serta disesuaikan berdasarkan kebutuhan pengguna.
  2. Ringan dan responsif – Tampilan Linkding yang sederhana membuat kinerjanya optimal bahkan pada server yang kecil.
  3. Mendukung tagging dan pencarian cepat – Linkding mempermudah dalam mengelompokkan dan mencari bookmark.
  4. Dapat di-hosting sendiri (self-hosted) – Linkding dapat dihosting oleh masing-masing user sehingga memiliki kontrol penuh atas data tanpa menghadapi risiko privasi dari pihak ketiga.
  5. Ekstensi browser & API – Linkding mendukung penambahan bookmark secara langsung dari Chrome, Firefox, atau melalui API.
  6. Mendukung multi-user – Linkding dapat diakses secara bersamaan di satu server dengan akun yang berbeda.

Kekurangan Linkding

  1. Proses instalasi cukup rumit – Proses penginstalan Linkding memerlukan pengetahuan dasar mengenai Docker dan Konfigurasi environment.
  2. Tampilan antarmuka sangat sederhana – Walaupun ringan, Desain Linkding kurang menarik bagi sebagian user.
  3. Tidak dilengkapi dengan fitur pencadangan otomatis berbasis cloud – Pengguna Linkding diwajibkan untuk melakukan pencadangan secara manual.
  4. Fitur kolaborasi terbatas – Dalam Linkding tidak terdapat sistem berbagi bookmark secara real-time antara pengguna seperti yang ada dalam aplikasi berbasis cloud.
  5. Kurang adanya integrasi sosial – Linkding tidak seperti Pocket atau Raindrop. io yang menyediakan opsi untuk berbagi dengan komunitas.

Perbandingan Linkding dengan Aplikasi Web Sejenis

1. Linkding vs Shaarli

Aspek Linkding Shaarli
Hosting Self-hosted berbasis Docker, bisa dijalankan di Railway atau VPS Self-hosted, sangat ringan dan bisa dijalankan langsung di server kecil
Bahasa Pemrograman Python (Django) PHP (tanpa framework besar)
Kustomisasi Dapat dimodifikasi, memiliki API dan dukungan ekstensi Sangat mudah diubah karena struktur kode sederhana
Kinerja Stabil, tapi butuh resource sedikit lebih tinggi Sangat cepat dan ringan, cocok untuk server kecil
Antarmuka (UI) Minimalis dan modern Sangat sederhana, fokus pada fungsi dasar
Fitur utama Tagging, pencarian cepat, impor/ekspor bookmark, API Simpan dan kelola tautan pribadi dengan cepat
Fitur kolaborasi Terbatas (satu pengguna utama) Tidak mendukung multi-user secara default
Dukungan ekstensi browser Ya, tersedia untuk Chrome & Firefox Ya, tapi sangat dasar (manual save via bookmarklet)

Kesimpulan : Shaarli unggul dalam kecepatan dan kesederhanaan, sangat cocok untuk pengguna yang ingin bookmark pribadi tanpa ribet. Namun, Linkding menawarkan pengalaman yang lebih modern dengan fitur tambahan seperti tagging, API, dan antarmuka yang lebih rapi.

2. Linkding vs Linkwarden

Aspek Linkding Linkwarden
Hosting Self-hosted, bisa dijalankan via Docker Self-hosted berbasis Node.js + MongoDB
Bahasa Pemrograman Python (Django) TypeScript / Next.js
Kustomisasi Cukup fleksibel, open-source Sangat fleksibel, open-source dan modular
Antarmuka (UI) Sederhana dan minimalis Lebih modern dan interaktif dengan tampilan bergaya Notion
Fitur kolaborasi Terbatas (single user) Ada fitur multi-user dan kolaboratif
Fitur tambahan Tagging, impor/ekspor, API sederhana Simpan snapshot halaman (HTML, PDF, screenshot), anotasi
Kinerja Ringan, cepat pada deployment kecil Lebih berat karena fitur arsip dan visualisasi konten
Privasi & kontrol data Penuh (karena self-hosted) Penuh (juga self-hosted)
Kemudahan setup Mudah dengan Docker Setup lebih kompleks (butuh konfigurasi database dan env)

Kesimpulan: Linkwarden unggul dalam fitur kolaboratif dan kemampuan arsip halaman (menyimpan konten, bukan hanya link). Namun, Linkding lebih ringan dan mudah dijalankan, cocok bagi pengguna yang menginginkan bookmark manager pribadi tanpa kompleksitas tambahan.

Kesimpulan

Proyek ini berhasil mendemonstrasikan bagaimana aplikasi Linkding dapat di-deploy dan dijalankan melalui platform Railway sebagai solusi manajemen bookmark berbasis web yang ringan, cepat, dan mudah digunakan. Linkding menghadirkan keseimbangan antara kesederhanaan dan fungsionalitas, dengan kemampuan untuk menyimpan, menandai (tagging), dan mencari tautan secara efisien. Selama proses implementasi, terbukti bahwa Linkding dapat berjalan dengan baik meskipun tanpa konfigurasi database kompleks, menjadikannya cocok untuk kebutuhan personal maupun kelompok kecil. Aplikasi ini juga menunjukkan keunggulan dalam hal kontrol data pribadi, karena pengguna dapat melakukan self-hosting dan sepenuhnya memiliki kendali atas datanya sendiri.

Dari sisi perbandingan, hasil analisis menunjukkan bahwa:

  1. Dibandingkan dengan Shaarli, Linkding lebih modern dan kaya fitur meskipun sedikit lebih berat.
  2. Dibandingkan dengan Linkwarden, Linkding lebih ringan dan mudah di-deploy, walaupun tidak sekompleks Linkwarden yang memiliki fitur kolaboratif dan arsip halaman.

Secara keseluruhan, Linkding merupakan pilihan ideal bagi pengguna yang ingin memiliki sistem manajemen bookmark mandiri, aman, dan efisien tanpa ketergantungan pada layanan pihak ketiga. Walaupun memiliki keterbatasan pada sisi tampilan dan kolaborasi, Linkding menawarkan fondasi kuat untuk pengelolaan tautan berbasis privasi dan fleksibilitas penuh dalam pengembangan.

Referensi

https://hub.docker.com/r/sissbruecker/linkding

https://linkwarden.app/

https://github.com/shaarli/Shaarli

https://linkding.link/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors