From ff04afaa771e1ec2bd482fa47ced1a8e4933c916 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Wed, 2 Feb 2022 10:05:27 +0100 Subject: [PATCH] Move documentation files around and adapt format for new website --- doc/book/README | 3 + doc/book/book.toml | 6 -- .../connect/index.md => connect/_index.md} | 8 +- doc/book/{src => }/connect/apps.md | 5 +- doc/book/{src => }/connect/backup.md | 6 +- .../{src => }/connect/cli-nextcloud-gui.png | Bin doc/book/{src => }/connect/cli.md | 5 +- doc/book/{src => }/connect/code.md | 5 +- doc/book/{src => }/connect/fs.md | 5 +- doc/book/{src => }/connect/repositories.md | 5 +- doc/book/{src => }/connect/websites.md | 5 +- .../cookbook/index.md => cookbook/_index.md} | 7 +- .../{src => }/cookbook/exposing_websites.md | 5 +- doc/book/{src => }/cookbook/from_source.md | 5 +- doc/book/{src => }/cookbook/gateways.md | 5 +- doc/book/{src => }/cookbook/real_world.md | 5 +- doc/book/{src => }/cookbook/recovering.md | 5 +- doc/book/{src => }/cookbook/reverse_proxy.md | 5 +- doc/book/{src => }/cookbook/systemd.md | 5 +- .../{src/design/index.md => design/_index.md} | 7 +- doc/book/{src => }/design/benchmarks.md | 0 doc/book/{src => }/design/goals.md | 5 +- .../design/img/endpoint-latency-dc.png | Bin .../{src => }/design/img/endpoint-latency.png | Bin doc/book/{src => }/design/internals.md | 5 +- doc/book/{src => }/design/related_work.md | 5 +- .../index.md => development/_index.md} | 7 +- doc/book/{src => }/development/devenv.md | 5 +- .../development/miscellaneous_notes.md | 5 +- .../{src => }/development/release_process.md | 5 +- doc/book/{src => }/development/scripts.md | 5 +- .../index.md => quick-start/_index.md} | 7 +- .../index.md => reference-manual/_index.md} | 7 +- .../cli.md | 5 +- .../configuration.md | 5 +- .../layout.md | 5 +- .../s3_compatibility.md | 5 +- doc/book/src/SUMMARY.md | 49 --------- doc/book/src/cookbook/website.md | 3 - doc/book/src/img/eu-flag-logo.png | Bin 2477 -> 0 bytes doc/book/src/img/logo.svg | 44 -------- doc/book/src/img/map.svg | 3 - doc/book/src/img/ngi-logo.png | Bin 34628 -> 0 bytes doc/book/src/img/software.svg | 3 - doc/book/src/img/usage.svg | 3 - doc/book/src/intro.md | 101 ------------------ .../index.md => working-documents/_index.md} | 7 +- .../compatibility_target.md | 5 +- .../design_draft.md | 5 +- .../load_balancing.md | 5 +- .../migration_04.md | 5 +- .../migration_06.md | 5 +- 52 files changed, 167 insertions(+), 249 deletions(-) create mode 100644 doc/book/README delete mode 100644 doc/book/book.toml rename doc/book/{src/connect/index.md => connect/_index.md} (95%) rename doc/book/{src => }/connect/apps.md (99%) rename doc/book/{src => }/connect/backup.md (95%) rename doc/book/{src => }/connect/cli-nextcloud-gui.png (100%) rename doc/book/{src => }/connect/cli.md (98%) rename doc/book/{src => }/connect/code.md (98%) rename doc/book/{src => }/connect/fs.md (96%) rename doc/book/{src => }/connect/repositories.md (98%) rename doc/book/{src => }/connect/websites.md (97%) rename doc/book/{src/cookbook/index.md => cookbook/_index.md} (94%) rename doc/book/{src => }/cookbook/exposing_websites.md (97%) rename doc/book/{src => }/cookbook/from_source.md (95%) rename doc/book/{src => }/cookbook/gateways.md (96%) rename doc/book/{src => }/cookbook/real_world.md (99%) rename doc/book/{src => }/cookbook/recovering.md (98%) rename doc/book/{src => }/cookbook/reverse_proxy.md (98%) rename doc/book/{src => }/cookbook/systemd.md (96%) rename doc/book/{src/design/index.md => design/_index.md} (94%) rename doc/book/{src => }/design/benchmarks.md (100%) rename doc/book/{src => }/design/goals.md (98%) rename doc/book/{src => }/design/img/endpoint-latency-dc.png (100%) rename doc/book/{src => }/design/img/endpoint-latency.png (100%) rename doc/book/{src => }/design/internals.md (99%) rename doc/book/{src => }/design/related_work.md (99%) rename doc/book/{src/development/index.md => development/_index.md} (91%) rename doc/book/{src => }/development/devenv.md (98%) rename doc/book/{src => }/development/miscellaneous_notes.md (98%) rename doc/book/{src => }/development/release_process.md (99%) rename doc/book/{src => }/development/scripts.md (98%) rename doc/book/{src/quick_start/index.md => quick-start/_index.md} (98%) rename doc/book/{src/reference_manual/index.md => reference-manual/_index.md} (74%) rename doc/book/{src/reference_manual => reference-manual}/cli.md (76%) rename doc/book/{src/reference_manual => reference-manual}/configuration.md (99%) rename doc/book/{src/reference_manual => reference-manual}/layout.md (98%) rename doc/book/{src/reference_manual => reference-manual}/s3_compatibility.md (98%) delete mode 100644 doc/book/src/SUMMARY.md delete mode 100644 doc/book/src/cookbook/website.md delete mode 100644 doc/book/src/img/eu-flag-logo.png delete mode 100644 doc/book/src/img/logo.svg delete mode 100644 doc/book/src/img/map.svg delete mode 100644 doc/book/src/img/ngi-logo.png delete mode 100644 doc/book/src/img/software.svg delete mode 100644 doc/book/src/img/usage.svg delete mode 100644 doc/book/src/intro.md rename doc/book/{src/working_documents/index.md => working-documents/_index.md} (83%) rename doc/book/{src/working_documents => working-documents}/compatibility_target.md (98%) rename doc/book/{src/working_documents => working-documents}/design_draft.md (99%) rename doc/book/{src/working_documents => working-documents}/load_balancing.md (99%) rename doc/book/{src/working_documents => working-documents}/migration_04.md (98%) rename doc/book/{src/working_documents => working-documents}/migration_06.md (97%) diff --git a/doc/book/README b/doc/book/README new file mode 100644 index 00000000..2a543888 --- /dev/null +++ b/doc/book/README @@ -0,0 +1,3 @@ +These are the sources for the documentation but not the whole website. +The website templates and other things are in garage_website, which +uses this as a submodule. diff --git a/doc/book/book.toml b/doc/book/book.toml deleted file mode 100644 index 3e163990..00000000 --- a/doc/book/book.toml +++ /dev/null @@ -1,6 +0,0 @@ -[book] -authors = ["Quentin Dufour"] -language = "en" -multilingual = false -src = "src" -title = "Garage Documentation" diff --git a/doc/book/src/connect/index.md b/doc/book/connect/_index.md similarity index 95% rename from doc/book/src/connect/index.md rename to doc/book/connect/_index.md index 60a3b03b..c6a46aea 100644 --- a/doc/book/src/connect/index.md +++ b/doc/book/connect/_index.md @@ -1,4 +1,10 @@ -# Integrations ++++ +title = "Integrations" +weight = 3 +sort_by = "weight" +template = "documentation.html" ++++ + Garage implements the Amazon S3 protocol, which makes it compatible with many existing software programs. diff --git a/doc/book/src/connect/apps.md b/doc/book/connect/apps.md similarity index 99% rename from doc/book/src/connect/apps.md rename to doc/book/connect/apps.md index 14d69ef8..65b97dfe 100644 --- a/doc/book/src/connect/apps.md +++ b/doc/book/connect/apps.md @@ -1,4 +1,7 @@ -# Apps (Nextcloud, Peertube...) ++++ +title = "Apps (Nextcloud, Peertube...)" +weight = 5 ++++ In this section, we cover the following software: [Nextcloud](#nextcloud), [Peertube](#peertube), [Mastodon](#mastodon), [Matrix](#matrix) diff --git a/doc/book/src/connect/backup.md b/doc/book/connect/backup.md similarity index 95% rename from doc/book/src/connect/backup.md rename to doc/book/connect/backup.md index a0af3833..878660fc 100644 --- a/doc/book/src/connect/backup.md +++ b/doc/book/connect/backup.md @@ -1,4 +1,8 @@ -# Backups (restic, duplicity...) ++++ +title = "Backups (restic, duplicity...)" +weight = 25 ++++ + Backups are essential for disaster recovery but they are not trivial to manage. Using Garage as your backup target will enable you to scale your storage as needed while ensuring high availability. diff --git a/doc/book/src/connect/cli-nextcloud-gui.png b/doc/book/connect/cli-nextcloud-gui.png similarity index 100% rename from doc/book/src/connect/cli-nextcloud-gui.png rename to doc/book/connect/cli-nextcloud-gui.png diff --git a/doc/book/src/connect/cli.md b/doc/book/connect/cli.md similarity index 98% rename from doc/book/src/connect/cli.md rename to doc/book/connect/cli.md index f7e0b22f..a62594a7 100644 --- a/doc/book/src/connect/cli.md +++ b/doc/book/connect/cli.md @@ -1,4 +1,7 @@ -# CLI tools ++++ +title = "CLI tools" +weight = 20 ++++ CLI tools allow you to query the S3 API without too many abstractions. These tools are particularly suitable for debug, backups, website deployments or any scripted task that need to handle data. diff --git a/doc/book/src/connect/code.md b/doc/book/connect/code.md similarity index 98% rename from doc/book/src/connect/code.md rename to doc/book/connect/code.md index 3d7acd58..4b2c4cb0 100644 --- a/doc/book/src/connect/code.md +++ b/doc/book/connect/code.md @@ -1,4 +1,7 @@ -# Your code (PHP, JS, Go...) ++++ +title = "Your code (PHP, JS, Go...)" +weight = 30 ++++ If you are developping a new application, you may want to use Garage to store your user's media. diff --git a/doc/book/src/connect/fs.md b/doc/book/connect/fs.md similarity index 96% rename from doc/book/src/connect/fs.md rename to doc/book/connect/fs.md index be8a3402..60a60c7f 100644 --- a/doc/book/src/connect/fs.md +++ b/doc/book/connect/fs.md @@ -1,4 +1,7 @@ -# FUSE (s3fs, goofys, s3backer...) ++++ +title = "FUSE (s3fs, goofys, s3backer...)" +weight = 25 ++++ **WARNING! Garage is not POSIX compatible. Mounting S3 buckets as filesystems will not provide POSIX compatibility. diff --git a/doc/book/src/connect/repositories.md b/doc/book/connect/repositories.md similarity index 98% rename from doc/book/src/connect/repositories.md rename to doc/book/connect/repositories.md index 8a3dce14..1b06385c 100644 --- a/doc/book/src/connect/repositories.md +++ b/doc/book/connect/repositories.md @@ -1,4 +1,7 @@ -# Repositories (Docker, Nix, Git...) ++++ +title = "Repositories (Docker, Nix, Git...)" +weight = 15 ++++ Whether you need to store and serve binary packages or source code, you may want to deploy a tool referred as a repository or registry. Garage can also help you serve this content. diff --git a/doc/book/src/connect/websites.md b/doc/book/connect/websites.md similarity index 97% rename from doc/book/src/connect/websites.md rename to doc/book/connect/websites.md index 6f66c8d0..1ef50463 100644 --- a/doc/book/src/connect/websites.md +++ b/doc/book/connect/websites.md @@ -1,4 +1,7 @@ -# Websites (Hugo, Jekyll, Publii...) ++++ +title = "Websites (Hugo, Jekyll, Publii...)" +weight = 10 ++++ Garage is also suitable to host static websites. While they can be deployed with traditional CLI tools, some static website generators have integrated options to ease your workflow. diff --git a/doc/book/src/cookbook/index.md b/doc/book/cookbook/_index.md similarity index 94% rename from doc/book/src/cookbook/index.md rename to doc/book/cookbook/_index.md index 792a5e6e..72c32687 100644 --- a/doc/book/src/cookbook/index.md +++ b/doc/book/cookbook/_index.md @@ -1,4 +1,9 @@ -# Cookbook ++++ +title="Cookbook" +template = "documentation.html" +weight = 2 +sort_by = "weight" ++++ A cookbook, when you cook, is a collection of recipes. Similarly, Garage's cookbook contains a collection of recipes that are known to works well! diff --git a/doc/book/src/cookbook/exposing_websites.md b/doc/book/cookbook/exposing_websites.md similarity index 97% rename from doc/book/src/cookbook/exposing_websites.md rename to doc/book/cookbook/exposing_websites.md index 0cbb1150..dcb56d36 100644 --- a/doc/book/src/cookbook/exposing_websites.md +++ b/doc/book/cookbook/exposing_websites.md @@ -1,4 +1,7 @@ -# Exposing buckets as websites ++++ +title = "Exposing buckets as websites" +weight = 25 ++++ You can expose your bucket as a website with this simple command: diff --git a/doc/book/src/cookbook/from_source.md b/doc/book/cookbook/from_source.md similarity index 95% rename from doc/book/src/cookbook/from_source.md rename to doc/book/cookbook/from_source.md index 167f01db..84c0d514 100644 --- a/doc/book/src/cookbook/from_source.md +++ b/doc/book/cookbook/from_source.md @@ -1,4 +1,7 @@ -# Compiling Garage from source ++++ +title = "Compiling Garage from source" +weight = 10 ++++ Garage is a standard Rust project. diff --git a/doc/book/src/cookbook/gateways.md b/doc/book/cookbook/gateways.md similarity index 96% rename from doc/book/src/cookbook/gateways.md rename to doc/book/cookbook/gateways.md index f03671a4..0cec4c53 100644 --- a/doc/book/src/cookbook/gateways.md +++ b/doc/book/cookbook/gateways.md @@ -1,4 +1,7 @@ -# Gateways ++++ +title = "Configuring a gateway node" +weight = 20 ++++ Gateways allow you to expose Garage endpoints (S3 API and websites) without storing data on the node. diff --git a/doc/book/src/cookbook/real_world.md b/doc/book/cookbook/real_world.md similarity index 99% rename from doc/book/src/cookbook/real_world.md rename to doc/book/cookbook/real_world.md index 906fe31f..788c80a9 100644 --- a/doc/book/src/cookbook/real_world.md +++ b/doc/book/cookbook/real_world.md @@ -1,4 +1,7 @@ -# Deploying Garage on a real-world cluster ++++ +title = "Deployment on a cluster" +weight = 5 ++++ To run Garage in cluster mode, we recommend having at least 3 nodes. This will allow you to setup Garage for three-way replication of your data, diff --git a/doc/book/src/cookbook/recovering.md b/doc/book/cookbook/recovering.md similarity index 98% rename from doc/book/src/cookbook/recovering.md rename to doc/book/cookbook/recovering.md index 279d574c..d826ca6c 100644 --- a/doc/book/src/cookbook/recovering.md +++ b/doc/book/cookbook/recovering.md @@ -1,4 +1,7 @@ -# Recovering from failures ++++ +title = "Recovering from failures" +weight = 35 ++++ Garage is meant to work on old, second-hand hardware. In particular, this makes it likely that some of your drives will fail, and some manual intervention will be needed. diff --git a/doc/book/src/cookbook/reverse_proxy.md b/doc/book/cookbook/reverse_proxy.md similarity index 98% rename from doc/book/src/cookbook/reverse_proxy.md rename to doc/book/cookbook/reverse_proxy.md index 14633ae8..55a2e9b1 100644 --- a/doc/book/src/cookbook/reverse_proxy.md +++ b/doc/book/cookbook/reverse_proxy.md @@ -1,4 +1,7 @@ -# Configuring a reverse proxy ++++ +title = "Configuring a reverse proxy" +weight = 30 ++++ The main reason to add a reverse proxy in front of Garage is to provide TLS to your users. diff --git a/doc/book/src/cookbook/systemd.md b/doc/book/cookbook/systemd.md similarity index 96% rename from doc/book/src/cookbook/systemd.md rename to doc/book/cookbook/systemd.md index ff3541f5..b271010b 100644 --- a/doc/book/src/cookbook/systemd.md +++ b/doc/book/cookbook/systemd.md @@ -1,4 +1,7 @@ -# Starting Garage with systemd ++++ +title = "Starting Garage with systemd" +weight = 15 ++++ We make some assumptions for this systemd deployment. diff --git a/doc/book/src/design/index.md b/doc/book/design/_index.md similarity index 94% rename from doc/book/src/design/index.md rename to doc/book/design/_index.md index 2e3b5fd9..93b7a27c 100644 --- a/doc/book/src/design/index.md +++ b/doc/book/design/_index.md @@ -1,4 +1,9 @@ -# Design ++++ +title = "Design" +weight = 5 +sort_by = "weight" +template = "documentation.html" ++++ The design section helps you to see Garage from a "big picture" perspective. It will allow you to understand if Garage is a good fit for diff --git a/doc/book/src/design/benchmarks.md b/doc/book/design/benchmarks.md similarity index 100% rename from doc/book/src/design/benchmarks.md rename to doc/book/design/benchmarks.md diff --git a/doc/book/src/design/goals.md b/doc/book/design/goals.md similarity index 98% rename from doc/book/src/design/goals.md rename to doc/book/design/goals.md index 10ef6a8f..dea1d2c8 100644 --- a/doc/book/src/design/goals.md +++ b/doc/book/design/goals.md @@ -1,4 +1,7 @@ -# Goals and use cases ++++ +title = "Goals and use cases" +weight = 5 ++++ ## Goals and non-goals diff --git a/doc/book/src/design/img/endpoint-latency-dc.png b/doc/book/design/img/endpoint-latency-dc.png similarity index 100% rename from doc/book/src/design/img/endpoint-latency-dc.png rename to doc/book/design/img/endpoint-latency-dc.png diff --git a/doc/book/src/design/img/endpoint-latency.png b/doc/book/design/img/endpoint-latency.png similarity index 100% rename from doc/book/src/design/img/endpoint-latency.png rename to doc/book/design/img/endpoint-latency.png diff --git a/doc/book/src/design/internals.md b/doc/book/design/internals.md similarity index 99% rename from doc/book/src/design/internals.md rename to doc/book/design/internals.md index 0b31584c..be531e97 100644 --- a/doc/book/src/design/internals.md +++ b/doc/book/design/internals.md @@ -1,4 +1,7 @@ -# Internals ++++ +title = "Internals" +weight = 20 ++++ ## Overview diff --git a/doc/book/src/design/related_work.md b/doc/book/design/related_work.md similarity index 99% rename from doc/book/src/design/related_work.md rename to doc/book/design/related_work.md index da3f807e..da883c06 100644 --- a/doc/book/src/design/related_work.md +++ b/doc/book/design/related_work.md @@ -1,4 +1,7 @@ -# Related work ++++ +title = "Related work" +weight = 15 ++++ ## Context diff --git a/doc/book/src/development/index.md b/doc/book/development/_index.md similarity index 91% rename from doc/book/src/development/index.md rename to doc/book/development/_index.md index 09147ece..662ec358 100644 --- a/doc/book/src/development/index.md +++ b/doc/book/development/_index.md @@ -1,4 +1,9 @@ -# Development ++++ +title = "Development" +weight = 6 +sort_by = "weight" +template = "documentation.html" ++++ Now that you are a Garage expert, you want to enhance it, you are in the right place! We discuss here how to hack on Garage, how we manage its development, etc. diff --git a/doc/book/src/development/devenv.md b/doc/book/development/devenv.md similarity index 98% rename from doc/book/src/development/devenv.md rename to doc/book/development/devenv.md index 78affa48..c2ef4e7d 100644 --- a/doc/book/src/development/devenv.md +++ b/doc/book/development/devenv.md @@ -1,4 +1,7 @@ -# Setup your development environment ++++ +title = "Setup your environment" +weight = 5 ++++ Depending on your tastes, you can bootstrap your development environment in a traditional Rust way or through Nix. diff --git a/doc/book/src/development/miscellaneous_notes.md b/doc/book/development/miscellaneous_notes.md similarity index 98% rename from doc/book/src/development/miscellaneous_notes.md rename to doc/book/development/miscellaneous_notes.md index 1adc5744..f0083ae5 100644 --- a/doc/book/src/development/miscellaneous_notes.md +++ b/doc/book/development/miscellaneous_notes.md @@ -1,4 +1,7 @@ -# Miscellaneous Notes ++++ +title = "Miscellaneous notes" +weight = 20 ++++ ## Quirks about cargo2nix/rust in Nix diff --git a/doc/book/src/development/release_process.md b/doc/book/development/release_process.md similarity index 99% rename from doc/book/src/development/release_process.md rename to doc/book/development/release_process.md index e6f9e608..e8d29ad8 100644 --- a/doc/book/src/development/release_process.md +++ b/doc/book/development/release_process.md @@ -1,4 +1,7 @@ -# Release process ++++ +title = "Release process" +weight = 15 ++++ Before releasing a new version of Garage, our code pass through a succession of checks and transformations. We define them as our release process. diff --git a/doc/book/src/development/scripts.md b/doc/book/development/scripts.md similarity index 98% rename from doc/book/src/development/scripts.md rename to doc/book/development/scripts.md index 387cb349..25f2ce0e 100644 --- a/doc/book/src/development/scripts.md +++ b/doc/book/development/scripts.md @@ -1,4 +1,7 @@ -# Development scripts ++++ +title = "Development scripts" +weight = 10 ++++ We maintain a `script/` folder that contains some useful script to ease testing on Garage. diff --git a/doc/book/src/quick_start/index.md b/doc/book/quick-start/_index.md similarity index 98% rename from doc/book/src/quick_start/index.md rename to doc/book/quick-start/_index.md index ffb3ebbe..9c3f7315 100644 --- a/doc/book/src/quick_start/index.md +++ b/doc/book/quick-start/_index.md @@ -1,4 +1,9 @@ -# Quick Start ++++ +title = "Quick Start" +weight = 0 +sort_by = "weight" +template = "documentation.html" ++++ Let's start your Garage journey! In this chapter, we explain how to deploy Garage as a single-node server diff --git a/doc/book/src/reference_manual/index.md b/doc/book/reference-manual/_index.md similarity index 74% rename from doc/book/src/reference_manual/index.md rename to doc/book/reference-manual/_index.md index 0d4bd6f3..62716df8 100644 --- a/doc/book/src/reference_manual/index.md +++ b/doc/book/reference-manual/_index.md @@ -1,4 +1,9 @@ -# Reference Manual ++++ +title = "Reference Manual" +weight = 4 +sort_by = "weight" +template = "documentation.html" ++++ A reference manual contains some extensive descriptions about the features and the behaviour of the software. Reading of this chapter is recommended once you have a good knowledge/understanding of Garage. diff --git a/doc/book/src/reference_manual/cli.md b/doc/book/reference-manual/cli.md similarity index 76% rename from doc/book/src/reference_manual/cli.md rename to doc/book/reference-manual/cli.md index 80789b9d..43a0c823 100644 --- a/doc/book/src/reference_manual/cli.md +++ b/doc/book/reference-manual/cli.md @@ -1,4 +1,7 @@ -# Garage CLI ++++ +title = "Garage CLI" +weight = 15 ++++ The Garage CLI is mostly self-documented. Make use of the `help` subcommand and the `--help` flag to discover all available options. diff --git a/doc/book/src/reference_manual/configuration.md b/doc/book/reference-manual/configuration.md similarity index 99% rename from doc/book/src/reference_manual/configuration.md rename to doc/book/reference-manual/configuration.md index 9f88b232..b9c093aa 100644 --- a/doc/book/src/reference_manual/configuration.md +++ b/doc/book/reference-manual/configuration.md @@ -1,4 +1,7 @@ -# Garage configuration file format reference ++++ +title = "Configuration file format" +weight = 5 ++++ Here is an example `garage.toml` configuration file that illustrates all of the possible options: diff --git a/doc/book/src/reference_manual/layout.md b/doc/book/reference-manual/layout.md similarity index 98% rename from doc/book/src/reference_manual/layout.md rename to doc/book/reference-manual/layout.md index 80c71d60..3f818b62 100644 --- a/doc/book/src/reference_manual/layout.md +++ b/doc/book/reference-manual/layout.md @@ -1,4 +1,7 @@ -# Creating and updating a cluster layout ++++ +title = "Cluster layout management" +weight = 10 ++++ The cluster layout in Garage is a table that assigns to each node a role in the cluster. The role of a node in Garage can either be a storage node with diff --git a/doc/book/src/reference_manual/s3_compatibility.md b/doc/book/reference-manual/s3_compatibility.md similarity index 98% rename from doc/book/src/reference_manual/s3_compatibility.md rename to doc/book/reference-manual/s3_compatibility.md index e6f32f6a..fdac06ab 100644 --- a/doc/book/src/reference_manual/s3_compatibility.md +++ b/doc/book/reference-manual/s3_compatibility.md @@ -1,4 +1,7 @@ -# S3 Compatibility status ++++ +title = "S3 Compatibility status" +weight = 20 ++++ ## Global S3 features diff --git a/doc/book/src/SUMMARY.md b/doc/book/src/SUMMARY.md deleted file mode 100644 index d9b76e96..00000000 --- a/doc/book/src/SUMMARY.md +++ /dev/null @@ -1,49 +0,0 @@ -# Summary - -[The Garage Data Store](./intro.md) - -- [Quick start](./quick_start/index.md) - -- [Cookbook](./cookbook/index.md) - - [Multi-node deployment](./cookbook/real_world.md) - - [Building from source](./cookbook/from_source.md) - - [Integration with systemd](./cookbook/systemd.md) - - [Configuring a gateway node](./cookbook/gateways.md) - - [Exposing buckets as websites](./cookbook/exposing_websites.md) - - [Configuring a reverse proxy](./cookbook/reverse_proxy.md) - - [Recovering from failures](./cookbook/recovering.md) - -- [Integrations](./connect/index.md) - - [Apps (Nextcloud, Peertube...)](./connect/apps.md) - - [Websites (Hugo, Jekyll, Publii...)](./connect/websites.md) - - [Repositories (Docker, Nix, Git...)](./connect/repositories.md) - - [CLI tools (rclone, awscli, mc...)](./connect/cli.md) - - [Backups (restic, duplicity...)](./connect/backup.md) - - [Your code (PHP, JS, Go...)](./connect/code.md) - - [FUSE (s3fs, goofys, s3backer...)](./connect/fs.md) - - -- [Reference Manual](./reference_manual/index.md) - - [Garage configuration file](./reference_manual/configuration.md) - - [Cluster layout management](./reference_manual/layout.md) - - [Garage CLI](./reference_manual/cli.md) - - [S3 compatibility status](./reference_manual/s3_compatibility.md) - -- [Design](./design/index.md) - - [Goals and use Cases](./design/goals.md) - - [Benchmarks](./design/benchmarks.md) - - [Related work](./design/related_work.md) - - [Internals](./design/internals.md) - -- [Development](./development/index.md) - - [Setup your environment](./development/devenv.md) - - [Development scripts](./development/scripts.md) - - [Release process](./development/release_process.md) - - [Miscellaneous notes](./development/miscellaneous_notes.md) - -- [Working Documents](./working_documents/index.md) - - [S3 compatibility target](./working_documents/compatibility_target.md) - - [Load balancing data](./working_documents/load_balancing.md) - - [Migrating from 0.5 to 0.6](./working_documents/migration_06.md) - - [Migrating from 0.3 to 0.4](./working_documents/migration_04.md) - - [Design draft](./working_documents/design_draft.md) diff --git a/doc/book/src/cookbook/website.md b/doc/book/src/cookbook/website.md deleted file mode 100644 index 53488ac4..00000000 --- a/doc/book/src/cookbook/website.md +++ /dev/null @@ -1,3 +0,0 @@ -# Hosting a website - -TODO diff --git a/doc/book/src/img/eu-flag-logo.png b/doc/book/src/img/eu-flag-logo.png deleted file mode 100644 index eab9e8331fbdf2dea08319d6157c608057329861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmV;e2~zfnP)8JmZXb6awc9pTLWq_CFO*prd8JsNGDodEy<00000000000000000000@XbNM z1;4nYI@iGqhhX>ant>Y*z~{y?4{kU>sZV^-3l)6J<3EOKbyUx1Y4GeA2#RMQq-r9B zMi`+*Ikqpa;2fUt?68+=w_EgZKJysJlOvnm;^B+w6^!i)e?u6ZM_zf;w>|cJ^1SKW z%|f`arj1PxavDXlffvrBnK+!K})EgTc{(+G3ls{a4 z$lAOW@=bMZ>_%o%y*4oR`;N~t^6|{dZ#bl7xc*v>L_d2ENeQz$?MN7~n?3eouFBcr z{i3)C{?~(bDP|Jh#l^4hEZPBkL9+(W(n>5k8wO%Fj;CJyebX0rv&HX4z(DBR@&9Vk z3)st3rjkzV(ng3bJccsUk6lYi)eZVCGWB(=Hz_td{J~p)TF1_kTEXiz7jukgQOnZM z85^U9$3QM@4>fW^(~CY#C3#A!|2mluAm-Sq zFizGsYo{{n^0{%5#^~WgIyseWzDTJ?pgf{iC&Fx5qmJxy3U(eTa+M!E%!ioL9K9}W z{z$}*mY1;RG>6~0-&S@3s$M(i9vXg)Ktnd2>m(kQOkOWM6h@w%=YnibE>sN{t!YMT z1ngoGKGC|-T7*$s*+40+2M09*y;3p>k9__L@7c)>g~H^Gi92&wBha*xifCqa?9dK% z3yNU$qDd zfs{;yu!|8ICHkzaWqWo;6rqLkR92r*TwmP`F*Xy;vg;j+?TZ_4N;i~GNQ!4VYYSo( zTw|DIpojq-taUl1Cu`@o3?1~~mksFa@hHLcsW)`qxQvfH>A8w8#jFsL5>}cf7}Tt| ztwj*4mg?Vu+m(?dx<-<{T7)wI000000002sB%v_5Ctq|LmZ-b)Mb>Ynud%CceSy~f znypH$Yb&dDAa0HBS5&Zy2W7Pm2piF_DE}tfLRqZ?c8}5G3o2MyTgCcI(+y>}y0d2Zp7T#twVhvy0J`E3_mtYnt2b^E)D~36EH>^{w4SgR3>s z@>ZxhusKDM7E0@&z5qX1%AM|!Rc!vVJ*N9;d>YgjwA4HBRGy*DK7YzvmC~*}ZL45? z0b6^ImXn$TqjIWtTP8y0AWrMx>zAG>m4YsFjB}~3hovc{Zqe$P7%NxjSMD2wnoflC zi4%W+1y|7aY$c~Y&ufGxWsqzs)#dNhG` zoiIAYt7`QHdzu5O7JBbhujk>kAOHXW000000PveZ2uaD#>G(u{NlCBZ-zTF^#vHqv zj$T2%dO~^yub@|O2r)}%pWhmt%-soINT;J$u%;()cf#JC28AS5fp>QByW;A@)q;;} zsVIDPEt?mK=oOr8?8uYMTRWxn*+-cw>qF3-*kJ>3J8z_41YQMe!JtU-8px2)F z^$O5!UST0fCRV$Bes`HzeE}2GJv$dd?TMB*W`T~tc%2}3AiN#gd9EqXQFvN<1(l$l zpm9Qa1-Hr4sZg(go`7CKetV}uqBo(iM?18mzFt9-V!L^BmrGi&pyJt?+{{f(TdM07 zSYxB#;!?alVZ8$14oTe3?-)8ddeLQkdIeL}^$Pau3rIS4K(7F>o2WASTGhXjhsdT+_<#79^i_HGZQ)Og39)lzWim|W z#;3FFe3*`MaoUioz@PnRmlv75-B{iaXlvw?L&rq6$kNgioEDT>_N6%TwBQLT3Lmuu zzyI`43(9Q%^Pij+j17aJub-h$@uXqmgJu~$wKs~(vd3y2kk?-ng`I5N56F7^*?jsE zm(3^D+t}NU&klA1=#XdRwi#wM_tb~Gv6H3d*q1D}Z^zta=!+SeXnA;Q4~?~Wj>2C) zVlVtL%+RNM(lB|a1lfG##J@Pn&py1S!prgY#3tpiobEiRCu=*i;;oyv5bkxj%fvCRCnId~xVQd#} zIvxXYG;qge=nRZOUiUusM#e1+o{;!&v<{f{ - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/book/src/img/map.svg b/doc/book/src/img/map.svg deleted file mode 100644 index 7b38b2d8..00000000 --- a/doc/book/src/img/map.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
France
France
UK
UK
Belgium
Belgium
Switzerland
Switzerland
Germany
Germany
Legend
Legend
A Zone
(multiple servers)
A Zone...
Chunks of data
Chunks of data
Each chunk of data is replicated in 3 zones
Each chunk of data is replicated in 3 zones
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/doc/book/src/img/ngi-logo.png b/doc/book/src/img/ngi-logo.png deleted file mode 100644 index ee0f0c29c0d797640d2b811b4643aba481f2fdd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34628 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 NW2PtfqPu_m{{fl)*4h97 diff --git a/doc/book/src/img/software.svg b/doc/book/src/img/software.svg deleted file mode 100644 index 178c5810..00000000 --- a/doc/book/src/img/software.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
CyberDuck
CyberDuck
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/doc/book/src/img/usage.svg b/doc/book/src/img/usage.svg deleted file mode 100644 index c861f6ac..00000000 --- a/doc/book/src/img/usage.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Host a Website
Host a Website
Backup Target
Backup Target
Store Media
Store Media
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/doc/book/src/intro.md b/doc/book/src/intro.md deleted file mode 100644 index 5d6e2cf0..00000000 --- a/doc/book/src/intro.md +++ /dev/null @@ -1,101 +0,0 @@ -

- - Garage's Logo - -

- -

- [ Download - | Git repository - | Matrix channel - | Drone CI - ] -

- - -# Data resiliency for everyone - -Garage is an **open-source** distributed **storage service** you can **self-host** to fullfill many needs: - -

-Summary of the possible usages with a related icon: host a website, store media and backup target -

- -

-⮞ learn more about use cases ⮜ -

- -Garage implements the **[Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html)** and thus is already **compatible** with many applications: - -

-Garage is already compatible with Nextcloud, Mastodon, Matrix Synapse, Cyberduck, RClone and Peertube -

- -

-⮞ learn more about integrations ⮜ -

- - -Garage provides **data resiliency** by **replicating** data 3x over **distant** servers: - -

-An example deployment on a map with servers in 5 zones: UK, France, Belgium, Germany and Switzerland. Each chunk of data is replicated in 3 of these 5 zones. -

- -

-⮞ learn more about our design ⮜ -

- -Did you notice that *this website* is hosted and served by Garage? - -## Keeping requirements low - -We worked hard to keep requirements as low as possible as we target the largest possible public. - - * **CPU:** any x86\_64 CPU from the last 10 years, ARMv7 or ARMv8. - * **RAM:** 1GB - * **Disk Space:** at least 16GB - * **Network:** 200ms or less, 50 Mbps or more - * **Heterogeneous hardware:** build a cluster with whatever second-hand machines are available - -*For the network, as we do not use consensus algorithms like Paxos or Raft, Garage is not as latency sensitive.* -*Thanks to Rust and its zero-cost abstractions, we keep CPU and memory low.* - -## Built on the shoulder of giants - - - [Dynamo: Amazon’s Highly Available Key-value Store ](https://dl.acm.org/doi/abs/10.1145/1323293.1294281) by DeCandia et al. - - [Conflict-Free Replicated Data Types](https://link.springer.com/chapter/10.1007/978-3-642-24550-3_29) by Shapiro et al. - - [Maglev: A Fast and Reliable Software Network Load Balancer](https://www.usenix.org/conference/nsdi16/technical-sessions/presentation/eisenbud) by Eisenbud et al. - -## Talks - - - [(fr, 2021-11-13, video) Garage : Mille et une façons de stocker vos données](https://video.tedomum.net/w/moYKcv198dyMrT8hCS5jz9) and [slides (html)](https://rfid.deuxfleurs.fr/presentations/2021-11-13/garage/) - during [RFID#1](https://rfid.deuxfleurs.fr/programme/2021-11-13/) event - - - [(en, 2021-04-28, pdf) Distributed object storage is centralised](https://git.deuxfleurs.fr/Deuxfleurs/garage/raw/commit/b1f60579a13d3c5eba7f74b1775c84639ea9b51a/doc/talks/2021-04-28_spirals-team/talk.pdf) - - - [(fr, 2020-12-02, pdf) Garage : jouer dans la cour des grands quand on est un hébergeur associatif](https://git.deuxfleurs.fr/Deuxfleurs/garage/raw/commit/b1f60579a13d3c5eba7f74b1775c84639ea9b51a/doc/talks/2020-12-02_wide-team/talk.pdf) - -## Community - -If you want to discuss with us, you can join our Matrix channel at [#garage:deuxfleurs.fr](https://matrix.to/#/#garage:deuxfleurs.fr). -Our code repository and issue tracker, which is the place where you should report bugs, is managed on [Deuxfleurs' Gitea](https://git.deuxfleurs.fr/Deuxfleurs/garage). - -## License - -Garage's source code, is released under the [AGPL v3 License](https://www.gnu.org/licenses/agpl-3.0.en.html). -Please note that if you patch Garage and then use it to provide any service over a network, you must share your code! - -# Sponsors and funding - -The Deuxfleurs association has received a grant from [NGI POINTER](https://pointer.ngi.eu/), to fund 3 people working on Garage full-time for a year: from October 2021 to September 2022. - - - -_This project has received funding from the European Union’s Horizon 2020 research and innovation programme within the framework of the NGI-POINTER Project funded under grant agreement N° 871528._ diff --git a/doc/book/src/working_documents/index.md b/doc/book/working-documents/_index.md similarity index 83% rename from doc/book/src/working_documents/index.md rename to doc/book/working-documents/_index.md index a9e7f899..9871d206 100644 --- a/doc/book/src/working_documents/index.md +++ b/doc/book/working-documents/_index.md @@ -1,4 +1,9 @@ -# Working Documents ++++ +title = "Working Documents" +weight = 7 +sort_by = "weight" +template = "documentation.html" ++++ Working documents are documents that reflect the fact that Garage is a software that evolves quickly. They are a way to communicate our ideas, our changes, and so on before or while we are implementing them in Garage. diff --git a/doc/book/src/working_documents/compatibility_target.md b/doc/book/working-documents/compatibility_target.md similarity index 98% rename from doc/book/src/working_documents/compatibility_target.md rename to doc/book/working-documents/compatibility_target.md index 3f121e47..836f3e30 100644 --- a/doc/book/src/working_documents/compatibility_target.md +++ b/doc/book/working-documents/compatibility_target.md @@ -1,4 +1,7 @@ -# S3 compatibility target ++++ +title = "S3 compatibility target" +weight = 5 ++++ If there is a specific S3 functionnality you have a need for, feel free to open a PR to put the corresponding endpoints higher in the list. Please explain diff --git a/doc/book/src/working_documents/design_draft.md b/doc/book/working-documents/design_draft.md similarity index 99% rename from doc/book/src/working_documents/design_draft.md rename to doc/book/working-documents/design_draft.md index 06ed46bd..830496ee 100644 --- a/doc/book/src/working_documents/design_draft.md +++ b/doc/book/working-documents/design_draft.md @@ -1,4 +1,7 @@ -# Design draft ++++ +title = "Design draft" +weight = 25 ++++ **WARNING: this documentation is a design draft which was written before Garage's actual implementation. The general principle are similar, but details have not been updated.** diff --git a/doc/book/src/working_documents/load_balancing.md b/doc/book/working-documents/load_balancing.md similarity index 99% rename from doc/book/src/working_documents/load_balancing.md rename to doc/book/working-documents/load_balancing.md index 99271add..87298ae6 100644 --- a/doc/book/src/working_documents/load_balancing.md +++ b/doc/book/working-documents/load_balancing.md @@ -1,4 +1,7 @@ -# Load Balancing Data (planned for version 0.2) ++++ +title = "Load balancing data" +weight = 10 ++++ **This is being yet improved in release 0.5. The working document has not been updated yet, it still only applies to Garage 0.2 through 0.4.** diff --git a/doc/book/src/working_documents/migration_04.md b/doc/book/working-documents/migration_04.md similarity index 98% rename from doc/book/src/working_documents/migration_04.md rename to doc/book/working-documents/migration_04.md index 05e7eafd..d9d3ede1 100644 --- a/doc/book/src/working_documents/migration_04.md +++ b/doc/book/working-documents/migration_04.md @@ -1,4 +1,7 @@ -# Migrating from 0.3 to 0.4 ++++ +title = "Migrating from 0.3 to 0.4" +weight = 20 ++++ **Migrating from 0.3 to 0.4 is unsupported. This document is only intended to document the process internally for the Deuxfleurs cluster where we have to do diff --git a/doc/book/src/working_documents/migration_06.md b/doc/book/working-documents/migration_06.md similarity index 97% rename from doc/book/src/working_documents/migration_06.md rename to doc/book/working-documents/migration_06.md index 687f7458..28e2c32e 100644 --- a/doc/book/src/working_documents/migration_06.md +++ b/doc/book/working-documents/migration_06.md @@ -1,4 +1,7 @@ -# Migrating from 0.5 to 0.6 ++++ +title = "Migrating from 0.5 to 0.6" +weight = 15 ++++ **This guide explains how to migrate to 0.6 if you have an existing 0.5 cluster. We don't recommend trying to migrate directly from 0.4 or older to 0.6.**