From b7a368bfae50f90064724915104be00777a42b65 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Mon, 13 Nov 2023 23:47:38 -0800 Subject: [PATCH] build docs --- Configuration.md | 2 +- Contents.rst | 1 + Docker.md | 2 +- Scheduled-Archiving.md | 2 +- Upgrading-or-Merging-Archives.md | 4 ++-- Web-Archiving-Community.md | 2 +- _static/icon.png | Bin 0 -> 10717 bytes archivebox.cli.rst | 30 +++--------------------------- archivebox.config.rst | 16 ++++++++-------- archivebox.core.rst | 8 -------- conf.py | 6 ++++-- 11 files changed, 22 insertions(+), 51 deletions(-) create mode 100644 _static/icon.png diff --git a/Configuration.md b/Configuration.md index 772126e..0312fe3 100644 --- a/Configuration.md +++ b/Configuration.md @@ -5,7 +5,7 @@ Configuration of ArchiveBox is done by using the `archivebox config` command, modifying the `ArchiveBox.conf` file in the data folder, or by using environment variables. All three methods work equivalently when using Docker as well. *Some equivalent examples of setting some configuration options:* -```bash[][] +```bash archivebox config --set CHROME_BINARY=google-chrome-stable # OR echo "CHROME_BINARY=google-chrome-stable" >> ArchiveBox.conf diff --git a/Contents.rst b/Contents.rst index 06ba8f0..f938024 100644 --- a/Contents.rst +++ b/Contents.rst @@ -31,6 +31,7 @@ General Publishing-Your-Archive.md Scheduled-Archiving.md Chromium-Install.md + Upgrading-or-Merging-Archives.md API Reference diff --git a/Docker.md b/Docker.md index 5433e61..092ca24 100644 --- a/Docker.md +++ b/Docker.md @@ -8,7 +8,7 @@ Make sure you have Docker installed and set up on your machine before following -- [Overview](#) +- [Overview](#Overview) - [Docker Compose](#docker-compose) (recommended way) - [Setup](#setup) - [Upgrading](https://github.com/ArchiveBox/ArchiveBox/wiki/Upgrading-or-Merging-Archives#upgrading-with-docker-compose-%EF%B8%8F) diff --git a/Scheduled-Archiving.md b/Scheduled-Archiving.md index 040b56d..305756d 100644 --- a/Scheduled-Archiving.md +++ b/Scheduled-Archiving.md @@ -14,7 +14,7 @@ positional arguments: optional arguments: -h, --help show this help message and exit - --quiet, -q Don't warn about storage space. + --quiet, -q Dont warn about storage space. --add Add a new scheduled ArchiveBox update job to cron --every EVERY Run ArchiveBox once every [timeperiod] (hour/day/month/year or cron format e.g. "0 0 * * *") --depth {0,1} Depth to archive to [0] or 1, see "add" command help for more info diff --git a/Upgrading-or-Merging-Archives.md b/Upgrading-or-Merging-Archives.md index e53ca1a..afb5684 100644 --- a/Upgrading-or-Merging-Archives.md +++ b/Upgrading-or-Merging-Archives.md @@ -252,7 +252,7 @@ More info: #### Database and filesystem contention issues when running multiple ArchiveBox processes ArchiveBox can sometimes struggle when archiving many links in parallel with multiple ArchiveBox processes trying to write to the database at the same time, leading to errors like this: -```logs +```bash Unable to create the django_migrations table (database is locked) ``` @@ -305,7 +305,7 @@ More info: A corrupted database file can theoretically only happen if an external process or filesystem error corrupts the SQLite3 database (there has only been [one report](https://github.com/ArchiveBox/ArchiveBox/issues/955) of a user encountering this in real life). If you ever need to repair a corrupted ArchiveBox index you can run the following steps. Note this is specific to this error, these steps do not apply to other migrations/db errors (see below for other issues): -```logs +```bash sqlite3.DatabaseError: database disk image is malformed ``` diff --git a/Web-Archiving-Community.md b/Web-Archiving-Community.md index 7022c98..300d6ff 100644 --- a/Web-Archiving-Community.md +++ b/Web-Archiving-Community.md @@ -341,7 +341,7 @@ If any of these links are dead, you can find an archived version on https://arch - **Reddit r/DataHoarder, r/SelfHosted, etc. posts and comments**: [#1](https://www.reddit.com/r/DataHoarder/comments/69e6i9/archive_a_browseable_copy_of_your_saved_pocket/), [#2](https://www.reddit.com/r/DataHoarder/comments/6kepv6/bookmarkarchiver_now_supports_archiving_all_major/), [#3](https://www.reddit.com/r/DataHoarder/comments/apnud4/continually_archive_websites_and_keep_the_older/), [#4](https://www.reddit.com/r/DataHoarder/comments/azdhd9/archivebox_open_source_selfhosted_web_archive/), [#5](https://www.reddit.com/r/DataHoarder/comments/b0o10h/archivebox_self_hosting_clone_of_archiveorg/) , **[#6](https://www.reddit.com/r/DataHoarder/comments/b4nrlc/in_case_you_havent_seen_it_archivebox_has_a/)**, [#7](https://www.reddit.com/r/selfhosted/comments/69eoi3/pocket_stream_archive_your_own_personal_wayback/), [#8](https://www.reddit.com/r/selfhosted/comments/an2368/archivebox_the_opensource_selfhosted_web_archive/), [and many more...](https://www.google.com/search?q=site%3Areddit.com+%22archivebox%22) - **Twitter:** - [Python Trending](https://twitter.com/pythontrending/status/1092492387182628865), [PyCoder's Weekly](https://twitter.com/pycoders/status/1105803699799105536), [Python Hub](https://twitter.com/PythonHub/status/1107601343395651589), [Smashing Magazine](https://twitter.com/smashingmag/status/1107990604774928386), [and many more...]([Twitter](https://twitter.com/search?l=&q=archivebox.io%20OR%20pirate%2Farchivebox%20OR%20archivebox&src=typd)) + [Python Trending](https://twitter.com/pythontrending/status/1092492387182628865), [PyCoder's Weekly](https://twitter.com/pycoders/status/1105803699799105536), [Python Hub](https://twitter.com/PythonHub/status/1107601343395651589), [Smashing Magazine](https://twitter.com/smashingmag/status/1107990604774928386), and many more... --- diff --git a/_static/icon.png b/_static/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..04462b21cc1c72de4fba6a6534103e0805c2879c GIT binary patch literal 10717 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