ابزارهای بایگانی صفحههای وب مانند ماشین وِیبک همواره مرا از دسترسی به پیوندهای از کار افتاده نجات دادهاند، اما این ابزار یک ضعفِ اجتنابناپذیر دارد: تنها زمانی میتواند صفحهای را بازیابی کند که پیش از ناپدید شدن، کسی به فکر بایگانی آن افتاده باشد.
من نسخهای خصوصی میخواستم که خودم سایتهایی برای تهیهٔ عکس فوری انتخاب میکردم، آنها را از پیش ضبط میکردم، و چند قالب قابل بازیابی را روی سختافزاری که خودم کنترلش میکردم نگه میداشتم.
بنابراین، آرکایوباکس را روی یک ماشین مجازی اوبونتو نصب کردم و شروع به ساختن گوشهٔ خصوصی و کوچکِ خودم از تاریخچهٔ اینترنت کردم. برای اینکه ببینم آیا واقعاً لیاقت مقایسه با ماشین وِیبک را دارد، یک صفحهٔ وب کوچک ساختم، آن را بایگانی کردم، سرورش را خاموش کردم، و سپس تلاش کردم هم صفحه و هم پروندهٔ کوچک قابل دانلودش را بازیابی کنم.
از یک ماشین مجازی اوبونتو ماشین وِیبک شخصی خودم را ساختم
یک نشانی وب به چند نسخهٔ مستقل از همان صفحه تبدیل شد





یک ماشین مجازی تازه اوبونتو ۲۶٫۰۴ با ۴ گیگابایت حافظهٔ رم راهاندازی کردم و آرکایوباکس را از طریق داکر نصب کردم. این کار کاملاً ساده بود و در نهایت نسخهٔ پایدار ۰٫۷٫۴ را به جای شاخهٔ توسعهایِ بازطراحیشدهٔ ۰٫۹ انتخاب کردم تا از دامهای احتمالی در امان بمانم.
پروندهٔ کامپوزِ دانلودشده بسیار بزرگ بود؛ ۲۷۸ خط و شامل جستجو، زمانبندی، پایهول، انجیناکس، وایرگارد و عالمی از چیزهایی که واقعاً بهشان نیاز نداشتم. آن را با همان یک سرویسی که واقعاً لازم داشتم جایگزین کردم:
services:
archivebox:
image: archivebox/archivebox:0.7.4
command: server --quick-init 0.0.0.0:8000
restart: unless-stopped
ports:
- "192.168.91.136:8000:8000"
volumes:
- ./data:/data
environment:
ALLOWED_HOSTS: "*"
PUBLIC_INDEX: "False"
PUBLIC_SNAPSHOTS: "False"
مجموعه را راهاندازی کردم، یک حساب مدیر ساختم، و داشبورد را با این سه فرمان آغاز کردم:
docker compose run --rm archivebox init
docker compose run --rm archivebox manage createsuperuser
docker compose up -d
سپس کروم میتوانست به رابط خصوصی و محافظتشده با کلمه عبور روی پورت ۸۰۰۰ دسترسی یابد. در پایان، گزینهٔ آرکایوباکس برای ارسال نشانیهای وبِ ضبطشده به Archive.org را غیرفعال کردم، چون میخواستم همهچیز کاملاً خصوصی و روی سرور خودم بماند:
docker compose run --rm archivebox config --set SAVE_ARCHIVE_DOT_ORG=False
نخستین آزمایش من استفاده از دامنهٔ example.com بود. آرکایوباکس نشانی اصلی را نگه داشت، اما در کنار آن یک عکس فوری با تاریخ و زمان دقیق نیز ساخت که شامل موارد زیر بود:
- Wget HTML clone
- صفحهٔ تکپروندهای Self-contained SingleFile (SingleFile)
- فایل PDF (PDF)
- تصویر صفحه (Screenshot)
- DOM پردازششده (Rendered DOM)
- استخراج متن مقاله (Readability)
- پروندهٔ WARC (WARC)
پس از تهیهٔ عکس فوری، صفحهٔ نتایج بیشتر شبیه یک فهرست بازیابی بود تا ابزار نشانهگذاری. میتوانستم صفحه را جستجو کنم و سپس چندین نسخه از سایت را در قالبهای گوناگون باز کنم. قالب SingleFile صفحه را قابل مرور و نزدیک به نسخهٔ اصلی نگه میداشت، Readability آن را به متن خالصاش تقلیل میداد، و تصویرِ PDF بهعنوان پشتیبان در انتظار میماند تا اگر سایر قالبها شکست خوردند به کار آیند.
یک صفحهٔ وب را پاک کردم و باز هم آن را به گذشته بازگرداندم
منبع ناپدید شد، اما بایگانی خصوصی من همچنان همهچیز را در خود داشت





دامنهٔ نمونه برای بررسی سریع مفید بود، اما بهزودی خطر حذف شدن از اینترنت را تهدید نمیکند. میخواستم آزمایش کنم که آیا آرکایوباکس واقعاً میتواند صفحهای را که کلاً ناپدید شده است بهدرستی نگه دارد. چون نمیتوانستم بدانم چه زمانی یا آیا اصلاً یک سایت واقعی قطع میشود، ترجیح دادم خودم یکی بسازم و روی همان سرور میزبانیاش کنم.
بر اساس پیکربندی چند WAN اپندبلیوآرتیِ خودم یک وبسایت کوچک ساختم که شامل یک تصویر، چند یادداشت پایه برای بازیابی، و یک پروندهٔ پیکربندی کوچکِ قابل دانلود بود که با پایتون نوشته شده بود. همچنین یک نشانهٔ یکتای COPPER-FINCH-۸۲۴۷ را در کد جای دادم تا چیزی برای جستجو در نسخههای بایگانیشده داشته باشم.
صفحه را از همان سرور اوبونتویی که آرکایوباکس روی آن اجرا میشد، روی پورت ۸۰۸۱ سرو کردم. از آرکایوباکس خواستم در سطح عمق ۱ از آن عکس فوری بگیرد تا پروندهٔ پیکربندی، صفحهٔ HTML و تصویر را دانلود و نگه دارد.
بهمحض پایان کار، صفحهٔ وب را کاملاً قطع کردم. سرور پایتون را متوقف کردم و پوشهٔ منبع آن را کلاً از خط خارج کردم. وقتی مرورگر را بازخوانی کردم، نشانی آیپی خطای اتصال داد، در حالی که آرکایوباکس همچنان روی پورت ۸۰۰۰ کار میکرد.
هم SingleFile و هم Wget صفحهٔ دارای سبک و تصویرش را نگه داشتند. PDF، تصویر صفحه، DOM پردازششده، و متن استخراجشدهٔ صفحه همگی پشتیبانهای دقیق و تعاملی به من دادند و همهٔ آنها نشانهٔ COPPER-FINCH-۸۲۴۷ را در خود داشتند.
پیش از بایگانی صفحه، درهمسازی SHA-۲۵۶ پرونده پیکربندی اصلیِ قابل دانلود را محاسبه کردم:
sha256sum openwrt-failover.conf
که این نتیجه را بازگرداند:
8c2557843c18f429543c74a5c136958d729c0c4ae33d002cf2972fb513bfb117
پس از بایگانی صفحه، نسخه Wget از پرونده .conf را مقایسه کردم و تأیید شدم که درهمسازیها کاملاً یکسان هستند. این بود لحظه ماشین زمان من. با موفقیت صفحهای را بایگانی کرده بودم، عمداً آن را از دسترس خارج کردم، و همچنان چیدمان، تصاویر محلی، محتوای خوانا و نسخهای دقیق تا سطح بایت از محتوای قابل دانلودش را بازگردانده بودم.
ماشین زمان من حالا در فایرفاکس زندگی میکند
افزونه مرورگر، حفظ صفحات را در خارج از آزمایشگاه عملی کرد





داشبورد ArchiveBox بهتر از انتظارم کار کرد، اما باز کردن آن و جازدن یک نشانی در هر بار نیاز به بایگانی، ثانیههای ارزشمندی را هدر میداد. خوشبختانه ArchiveBox افزونه رسمی فایرفاکس دارد؛ آن را نصب کردم و محل اجرای نسخه محلیام را به آن اعلام کردم:
http://192.168.91.136:8000
از آنجا که پیشتر در فایرفاکس به ArchiveBox وارد شده بودم، افزونه همان نشست تأیید هویتشده را به کار گرفت. حالا میتوانستم با یک کلیک، صفحهای که در آن لحظه در مرورگرم باز بود را بایگانی کنم.
برای نخستین آزمایش واقعی، تازه منتشرشدهام درباره ساخت NAS پشتیبان ابری را بایگانی کردم، چون بسیار پچیدهتر از صفحه دستسازم بود. این مقاله بلند بود، روی یک وبگاه تجاری، با تصاویر متعدد، اسکریپتها، تبلیغات و محتوایی فراتر از دید اولیه.
ArchiveBox توانست نسخههای دقیق و قابل استفاده در قالبهای SingleFile، Wget، PDF، نماگرفت، DOM پردازششده و استخراج متن مقاله تولید کند. میتوانستم مقاله بایگانیشده را از بخش پایینتر از مقدمه باز کنم و ببینم همه قالببندیها و تصاویر سالم ماندهاند.
تنها قالبی که کار نکرد، Original بود که هشدار فایرفاکس تولید کرد. دلیلش این بود که صفحه MUO نتوانست صفحه زنده خود را درون ArchiveBox نمایش دهد، احتمالاً به دلایل امنیتی. جز این، همه نسخههایی که واقعاً به آنها تکیه میکردم، حتی آفلاین هم محلی قابل دسترس remained.
اجرای ماشین زمان شخصی، اما با یک شرط
من آرشیو را کنترل میکنم؛ یعنی مسئولیتش هم با من است

هر کس که حتی نیمهمهمترین زیرساخت را خود میزبانی کرده باشد، میداند که جاودان نیست. اگر این ماشین مجازی پیش از پشتیبانگیری از پوشه دادهاش خراب شود، باید با همه آن نماگرفتها خداحافظی کنم.
ArchiveBox همچنین نمیتواند بازپخش بینقص هر ورود به سامانه، پخشکننده ویدیو یا رابط پرد艳شگرا را تضمین کند. افزونگی هم فضا میطلبد. دامنه example.com تنها ۳۸۴ کیلوبایت در ۱۷ پرونده اشغال کرد. آزمایش کنترلشده من این مجموعه را به ۱.۵ مگابایت و ۵۲ پرونده رساند. افزودن مقاله MUO آن را به ۳۴ مگابایت و ۱۵۸ پرونده افزایش داد.
کمتر از ۴۰ مگابایت برای سه وبگاه مرا به سمت تغییر اندازه و گسترش پارتیشنها فراری نمیدهد، اما وقتی بایگانی سایتهای بیشتر را آغاز کنم، قطعاً انباشته خواهد شد. دلیلش این است که نشانکها تنها نشانیاند، در حالی که ArchiveBox صفحات HTML، تصاویر، PDFها، نماگرفتها، دادههای WARC و فراداده را ذخیره میکند.
با این حال، این تبادل به نظر من vẫn بایدی است؛ زیرا قرار نیست هر صفحهای را که بیهدف باز میکنم، حفظ کنم. چنین کاری سریعاً یک بایگانی مفید را به انباری تبدیل میکند. مستندات، منابع پژوهش، خریدهای آنلاین، راهحلهای قدیمی برای مشکلات خاص، و هر آنچه ممکن روزی نیاز به ارجاعش داشته باشم، جایگاهی به دست آوردهاند.
در نهایت، فضای ذخیرهسازی نسبت به از دست دادن یک راهحل فنی نامعمول، منبع پژوهشی، یا پاسخی مدفون در یک گفتگووی Stack Overflow، بسیار ارزانتر است.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Gregory Gibson است. مشاهده مقاله اصلی