ספריה אישית, איך אתם קוראים ספרים?

הקדמה

לפני מספר ימים התפרסם כי החברה Humble Games עומדת בפניה סגירה, היו מספר פרסומים שונים, שחלק דיברו על פיטורים ורה-ארגון, ואחרים על סגירה מלאה של החברה. לא ידעתי איך זה ישפיע על Humble Bundle, אז החלטתי להוריד את כל הספרים שרכשתי מהם (מדובר במאות ספרים).

במהלך ההורדה נתקלתי בשאלה, “יש פה המון ספרים שאני רוצה לקרוא”, אבל אני קורא ממספר אמצעים שונים:

  • eBook Reader (אמצעי עיקרי).
  • Laptop.
  • Tablet.
  • ספרים פיזיים.

והבעיה העיקרית זה מעקב אחרי הספרים שאני קורא, הסמניות והערות שאני כותב. איך אני יכול לסנכרן את כל אלה. אני לא בטוח שהפתרון שבחרתי הוא הטוב ביותר, אבל מצאתי את עצמי משקיע את הסופ"ש בלסדר לי ספריה שמבוססת על המערכת אירוח עצמי בשם Kavita וחשבתי שזה יהיה פוסט נחמד לחלוק עם הקהילה.

התקנה

התקנה היום של אפליקציות הפכה להיות סופר פשוטה עם קונטיינרים, זה מאפשר לארוז את כל קבצי ההתקנה\הרצה והתלויות שלהם יחדיו, ופשוט להריץ אותם במכונת יעד. במקרה הזה עשיתי שימוש ב-Image מוכן של jvmilazz0, כמובן שאתם יכולים לבנות את הכל מאפס - אבל זו כבר בחירה שלכם - זה כנראה משהו שאעשה בעתיד.

כל מה שנדרש זה Container Engine (יכול להיות Docker, Podman ואחרים). אני משתמש ב-Rootless Docker בכדי להקשיח את הסביבה וב-docker-compose.yml הבא בשביל להריץ את המערכת:

services:
  kavita:
    image: jvmilazz0/kavita:latest    # Using the stable branch from the official dockerhub repo.
    restart: unless-stopped
    container_name: kavita
    volumes:
      - ./Data:/data:ro              # Manga is just an example you can have the name you want. See the following
      - ./Conf:/kavita/config:rw     # Change './data if you want to have the config files in a different place.
                                                             # /kavita/config must not be changed
    environment:
      - TZ=Asia/Jerusalem
    ports:
      - "15080:5000" # Change the public port (the first 5000) if you have conflicts with other services
    privileged: false
    cap_drop:
      - NET_ADMIN
      - SYS_ADMIN
      - CAP_MKNOD
      - CAP_MAC_ADMIN
      - CAP_NET_RAW
      - CAP_SYS_CHROOT
      - CAP_SYS_PTRACE
      - CAP_SYS_RAWIO
    deploy:
      resources:
        limits:
          cpus: '1.25'
          memory: 6G
        reservations:
          memory: 1G

מידע נוסף:

בגלל שיש לי Nginx, אני צריך גם להגדיר vhost בשביל reverse-proxy, להלן ההגדרות (השם של ההוסט ונתיב הוחלפו ב-[REDACTED]):

server {
    listen       80;
    listen  [::]:80;

    server_name [REDACTED];

    location /.well-known/acme-challenge {
        allow all;
        try_files $uri $uri/ =404;
        root /home/[REDACTED]/Apps/Shared/acme-challenge;
    }
    location / {
        return 301 https://[REDACTED]$request_uri;
    }
}

server {
    listen  443 ssl;
    listen  [::]:443 ssl;
    http2 on;
    server_name [REDACTED];

    ssl_certificate      /etc/nginx/certs/[REDACTED]/fullchain.pem;
    ssl_certificate_key  /etc/nginx/certs/[REDACTED]/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    add_header 'Strict-Transport-Security' 'max-age=63072000' always;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/nginx/certs/[REDACTED]/chain.pem;

    location / {
        proxy_pass http://127.0.0.1:15080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade"; 
    }

    # deny access to dot files (.)
    #
    location ~ /\. {
        deny  all;
    }

    # replace with the IP address of your resolver
    resolver 8.8.8.8;
}

מידע נוסף:

קינפוג

לאפליקציה יש “דעתנות” לגבי מבנה הספריות והקבצים, נראה שזה נבנה במטרה לקומיקס (סדרות), אפשר לתמודד עם זה, אבל זה אולי ידרוש ממכם לשנות את מבנה אחסון הקבצים.

רק הערה, הקבצים שנתמכים הינם pdf ו-epub.
לעוד מידע:

סיכום

ואני דיי מרוצה מהתוצאה, אני מקווה שזה יגרום לי לקרוא מעט יותר בעתיד.

מה איתכם, איך אתם קוראים ספרים, ואיך אתם דואגים לסנכרן את ההתקדמות שלכם?

סיימתי להעלות את הספרים :smiling_imp:

לייק 1

אני בדרך כלל קורא ספרים פיזיים, אני כרגע אוסף כמה שיותר ספרים גם אם אני לא אקרא אותם כרגע, כדי לבנות ספריה טובה בבית שלי.
אבל, כשאני כן קורא ספר דיגיטלי הוא בדרך כלל יהיה בקובץ ePub וגם PDF על השרת הביתי שלי. ככה אני יכול לקרוא את הספרים גם ישירות מהמחשב וגם מהטלפון/אייפד שלי.
אפליקציית books של אפל היא נהדרת בשבילי, אני דוגל במינימליזם (אולי אפילו אכתוב על זה פוסט בשלב מסוים) והיא נותנת לי בדיוק את מה שאני צריך ולא מעבר (:

אני משער שה-eco-system של אפל דיי מקל על עניין סנכון של הספרים (אבל אני נמנע [ככול שאני יכול] ממוצרי אפל), זה נראה לי יותר מדי השקעה בשבילי בכדי שאוכל לסנכן את הספרים שלי בין המחשב (לינוקס), הטאבלט\ebook reader (אנדרויד). ולמרות שיש לי מאגר ספרים פיזיים די משמעותי

אני עדיין מעדיף לקרוא ספרים ב-eBook reader, הספריה (הפיזית) הזו היום היא יותר for show… כאילו כשאני מטייל אני צריך לבחור, האם לקחת איתי 1-2 ספרים פיזיים, או eBook reader עם 400~ ספרים. למרות כאשר אני חושב על זה לעומק, כנראה שעדיף לקחת ספר בודד ופשוט להיות מואלץ לקרוא אותו.

את האמת שלא ניסיתי להשתמש ב-iCloud, אף פעם לא מצאתי סיבה טובה מספיק לשלם. יש לי רק אייפד (שאני כבר בקושי משתמש בו) ואייפון, אני מעדיף שכל מה שיש לי על הענן הוא יהיה self hosted בשרת הביתי השלי.