Compare commits
1 commit
master
...
blog-surve
Author | SHA1 | Date | |
---|---|---|---|
2da43a2472 |
1
.gitignore
vendored
|
@ -3,4 +3,3 @@ public
|
|||
content/documentation
|
||||
static/style.css
|
||||
static/api
|
||||
.DS_Store
|
||||
|
|
11
config.toml
|
@ -6,8 +6,8 @@ output_dir = "public"
|
|||
compile_sass = true
|
||||
minify_html = false
|
||||
ignored_content = []
|
||||
#generate_feed = true
|
||||
#feed_filename = "rss.xml"
|
||||
generate_feed = true
|
||||
feed_filename = "rss.xml"
|
||||
hard_link_static = false
|
||||
build_search_index = true
|
||||
|
||||
|
@ -53,14 +53,11 @@ navbar_items = [
|
|||
]},
|
||||
]
|
||||
|
||||
[extra.metadata]
|
||||
favicon_ico = "/favicon.ico"
|
||||
favicon_svg = "/icons/favicon.svg"
|
||||
[extra.favicon]
|
||||
favicon_16x16 = "/icons/favicon-16x16.png"
|
||||
favicon_32x32 = "/icons/favicon-32x32.png"
|
||||
apple_touch_icon = "/icons/apple-touch-icon.png"
|
||||
webmanifest = "/icons/site.webmanifest"
|
||||
cover_default = "/images/og-default.png"
|
||||
|
||||
[extra.organization]
|
||||
name = "Garage"
|
||||
|
@ -70,7 +67,7 @@ logo_simple = "/images/garage-logo-simple.svg"
|
|||
logo_horizontal = "/images/garage-logo-horizontal.svg"
|
||||
|
||||
[extra.author]
|
||||
name = "The Garage team"
|
||||
name = "Garage"
|
||||
avatar = "/images/garage-logo.svg"
|
||||
|
||||
[extra.social]
|
||||
|
|
BIN
content/blog/2024-03-survey/all-access-mode.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
content/blog/2024-03-survey/all-cluster-object-count.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
content/blog/2024-03-survey/all-cluster-size.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
content/blog/2024-03-survey/all-currently-admin.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
content/blog/2024-03-survey/all-data-kind.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
content/blog/2024-03-survey/all-how-known.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
content/blog/2024-03-survey/all-lose-data.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
content/blog/2024-03-survey/all-n-zones.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
content/blog/2024-03-survey/all-object-size.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
content/blog/2024-03-survey/all-satisfaction.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
content/blog/2024-03-survey/all-strong-points.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
content/blog/2024-03-survey/all-wanted-features.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
content/blog/2024-03-survey/big-currently-admin.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
content/blog/2024-03-survey/big-data-kind.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
content/blog/2024-03-survey/big-n-zones.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
content/blog/2024-03-survey/big-satisfaction.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
content/blog/2024-03-survey/big-wanted-features.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
content/blog/2024-03-survey/commercial-cluster-object-count.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
content/blog/2024-03-survey/commercial-cluster-size.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
content/blog/2024-03-survey/commercial-data-kind.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
content/blog/2024-03-survey/commercial-n-zones.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
content/blog/2024-03-survey/commercial-object-size.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
content/blog/2024-03-survey/commercial-satisfaction.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
content/blog/2024-03-survey/commercial-strong-points.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
content/blog/2024-03-survey/commercial-wanted-features.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
content/blog/2024-03-survey/flaws-wanted-features.png
Normal file
After Width: | Height: | Size: 89 KiB |
BIN
content/blog/2024-03-survey/homelab-cluster-object-count.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
content/blog/2024-03-survey/homelab-cluster-size.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
content/blog/2024-03-survey/homelab-data-kind.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
content/blog/2024-03-survey/homelab-n-zones.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
content/blog/2024-03-survey/homelab-satisfaction.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
content/blog/2024-03-survey/homelab-strong-points.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
content/blog/2024-03-survey/homelab-wanted-features.png
Normal file
After Width: | Height: | Size: 90 KiB |
261
content/blog/2024-03-survey/index.md
Normal file
|
@ -0,0 +1,261 @@
|
|||
+++
|
||||
title="Results of the community survey"
|
||||
date=2024-03-12
|
||||
+++
|
||||
|
||||
*We ran a community survey to gather feedback from Garage users and potential
|
||||
users during a two-month period. One of the main objectives of
|
||||
this survey was to determine expectations from the community for Garage's
|
||||
upcoming v1.0 release and for future work. Read this article for a discussion
|
||||
of the results.*
|
||||
|
||||
<!-- more -->
|
||||
|
||||
---
|
||||
|
||||
The survey collected 127 response during a time period of almost 2 months,
|
||||
from the 15th of January to the 12th of March.
|
||||
The first question we asked users were how they have heard of Garage:
|
||||
the majority answered that they have head of Garage through a link
|
||||
aggregator or social network such as Reddit or HN. A portion of
|
||||
users have heard of it from word of mouth, and a significant portion also
|
||||
answered "Other". Unfortunately we didn't ask respondents for details
|
||||
if they selected "Other", so I'm quite curious as to what this could be.
|
||||
Other choices have almost negligible number of responses.
|
||||
|
||||
<center><img src="all-how-known.png" /></center>
|
||||
|
||||
Half of the respondents indicated that they are currently running a Garage cluster
|
||||
for production data, of which a small fraction indicated running it in a commercial
|
||||
setting. Another third of respondents indicated that they are currently testing Garage
|
||||
or have tested it previously.
|
||||
|
||||
<center><img src="all-currently-admin.png" /></center>
|
||||
|
||||
## About currently running Garage installations
|
||||
|
||||
We first asked users what kind of data they were storing in Garage.
|
||||
The first answer, selected by about half of the participants,
|
||||
is for storing back-ups, followed closely by personal files.
|
||||
Other answers follow with a rougly linearly decreasing pattern.
|
||||
|
||||
<center><img src="all-data-kind.png" /></center>
|
||||
|
||||
The majority of users are not running Garage in geodistributed mode,
|
||||
but many users are also running in 2, 3 or even 4 locations.
|
||||
|
||||
<center><img src="all-n-zones.png" /></center>
|
||||
|
||||
A large majority of users are only using Garage through the S3 API.
|
||||
The remaining users are mostly using a mix of S3 API and web API,
|
||||
with a small number of users (5) using Garage primarily as a web server.
|
||||
|
||||
<center><img src="all-access-mode.png" /></center>
|
||||
|
||||
Regarding the size of clusters, the majority of installed clusters are less
|
||||
than 1TB in size. The others are almost all between 1TB to 10TB. 8 users
|
||||
indicated that they are running clusters of more than 10TB. Two users that
|
||||
reported running clusters of more than 100TB, but they also indicated that they
|
||||
are not currently using Garage, so I think that's the size of the data they
|
||||
would like/need to store on Garage, but not the actual size of an
|
||||
installed cluster. The number of objects stored in clusters is quite evenly
|
||||
split between less than 10k, 10k to 100k, and more than 100k.
|
||||
|
||||
<center><img src="all-cluster-size.png" /></center>
|
||||
<center><img src="all-cluster-object-count.png" /></center>
|
||||
|
||||
For about half of respondents, this means storing mostly objects of around 100MB in size.
|
||||
For the others, it's mostly objects of around 10MB. This is very inexact since the
|
||||
proposed answers for cluster size and object count had such large ranges.
|
||||
|
||||
<center><img src="all-object-size.png" /></center>
|
||||
|
||||
## Satisfaction regarding Garage
|
||||
|
||||
A majority of users reported a high degree of satisfaction with Garage.
|
||||
About a quarter said that Garage has some significant flaws. A small portion
|
||||
of respondents indicated that they cannot use Garage due to missing
|
||||
important features or critical bugs, but still took the time to answer
|
||||
the survey (thanks to them!).
|
||||
|
||||
<center><img src="all-satisfaction.png" /></center>
|
||||
|
||||
The top 3 strong points of Garage reported by its users are: good S3 compatibility
|
||||
(first place, with 2/3 of respondents agreeing), good performance on small / low-power
|
||||
machines, and easy setup. I'd say we are pretty much on target, as these are some of the
|
||||
main objectives of Garage.
|
||||
|
||||
<center><img src="all-strong-points.png" /></center>
|
||||
|
||||
As for most wanted features in Garage, there is a clear winner with a web interface
|
||||
for cluster administration, with over 40% of users mentioning it. The second most
|
||||
wanted feature is support for S3 versioning, with almost 30% of answers.
|
||||
|
||||
<center><img src="all-wanted-features.png" /></center>
|
||||
|
||||
The vast majority of users reported never losing data that they stored in Garage.
|
||||
Only one indicated that they lost data and it was Garage's fault: this was
|
||||
because they tried to move an LMDB database between machines with different
|
||||
architectures, but the LMDB on-disk format is architecture specific. We should
|
||||
probably be more clear about this in the documentation.
|
||||
|
||||
<center><img src="all-lose-data.png" /></center>
|
||||
|
||||
|
||||
# Users in a "homelab/self-hosted setting"
|
||||
|
||||
52 respondents indicated that they are using Garage for storing production
|
||||
data in a homelab or self-hosted setting. I'd say this is the most
|
||||
representative portion of Garage users, as it is its primary target.
|
||||
Let's look at the answers from these users only.
|
||||
|
||||
## About the clusters
|
||||
|
||||
Personal files now takes the first place of the kinds of data stored on these clusters,
|
||||
still closely followed by back-ups.
|
||||
|
||||
<center><img src="homelab-data-kind.png" /></center>
|
||||
|
||||
These users are mostly not using Garage in a geodistributed setting.
|
||||
The distribution of answers is very similar to the overall.
|
||||
|
||||
<center><img src="homelab-n-zones.png" /></center>
|
||||
|
||||
Most clusters of these users are less than 1TB and size,
|
||||
and the remaining are mostly in the 1TB - 10TB range.
|
||||
There are fewer clusters than average storing more than 100k objects in this population,
|
||||
but the distribution of object sizes (not shown) is very similar to the overall.
|
||||
|
||||
<center><img src="homelab-cluster-size.png" /></center>
|
||||
<center><img src="homelab-cluster-object-count.png" /></center>
|
||||
|
||||
## Satisfaction regarding Garage
|
||||
|
||||
Homelab/self-hosting users reported a level of satisfaction a bit higher with Garage,
|
||||
with almost 3/4 very satisfied.
|
||||
|
||||
<center><img src="homelab-satisfaction.png" /></center>
|
||||
|
||||
The top 3 reasons for using Garage are the same, but good performance on small
|
||||
/ low-power machines is now taking the first place.
|
||||
|
||||
<center><img src="homelab-strong-points.png" /></center>
|
||||
|
||||
The top 2 wanted features are still the same, now with an equal number of votes.
|
||||
|
||||
<center><img src="homelab-wanted-features.png" /></center>
|
||||
|
||||
# Users in a "commercial setting"
|
||||
|
||||
Fewer users indicated that they are running Garage in a commercial setting,
|
||||
as this concerned only 12 of the respondents to the survey.
|
||||
|
||||
## About the clusters
|
||||
|
||||
Half of users reported using Garage to store back-ups,
|
||||
and almost half reported storing observability data and web app / service data.
|
||||
One third selected static websites.
|
||||
|
||||
<center><img src="commercial-data-kind.png" /></center>
|
||||
|
||||
Users in a commercial setting are more consistent in their use of the
|
||||
geo-distribution features offered by Garage. Only one third of users are
|
||||
not running in geo-distributed mode. Another third is running Garage in 2 locations,
|
||||
and the last third is running in 3 or more locations, thus benefitting from
|
||||
the best resiliency properties that Garage can offer.
|
||||
|
||||
<center><img src="commercial-n-zones.png" /></center>
|
||||
|
||||
The majority of commercial deployments are storing between 1TB and 10TB of data.
|
||||
About a quarter are storing more than 1 million objects.
|
||||
|
||||
<center><img src="commercial-cluster-size.png" /></center>
|
||||
<center><img src="commercial-cluster-object-count.png" /></center>
|
||||
|
||||
It seems that the average object size is much smaller in this population:
|
||||
the majority of answers correspond to average object sizes of less than 10MB,
|
||||
and one foruth of answers corresponds to objects of around 1MB.
|
||||
|
||||
<center><img src="commercial-object-size.png" /></center>
|
||||
|
||||
|
||||
## Satisfaction regarding Garage
|
||||
|
||||
Three quarter of these users reported a high degree of satisfaction with Garage,
|
||||
about the same as for homelab users.
|
||||
|
||||
<center><img src="commercial-satisfaction.png" /></center>
|
||||
|
||||
The most liked qualities of Garage are a bit different. Fewer users reported
|
||||
satisfaction due to the easy setup of Garage, but more users indicated
|
||||
that the possibility of easily adding and removing nodes was important to them.
|
||||
Good tolerance to offline nodes and crashes, and good performance in the face
|
||||
of latency, which are the core properties that make Garage work well in
|
||||
geo-distributed settings, were selected by two thirds of users, most likely
|
||||
the same that said they are running in geo-distributed mode.
|
||||
|
||||
<center><img src="commercial-strong-points.png" /></center>
|
||||
|
||||
A web interface for cluster administration is still the most wanted feature, with 40%
|
||||
of votes. Then, one third voted for better monitoring and observability, and for
|
||||
per-bucket levels of consistency and numbers of replicas. Only 25% voted for S3
|
||||
versioning.
|
||||
|
||||
<center><img src="commercial-wanted-features.png" /></center>
|
||||
|
||||
# Users that have the biggest clusters
|
||||
|
||||
7 users reported running clusters storing more than 10TB of data.
|
||||
About half of these users are using Garage for a homelab or self-hosted setup,
|
||||
and one is in a commercial setting.
|
||||
|
||||
<center><img src="big-currently-admin.png" /></center>
|
||||
|
||||
## About the clusters
|
||||
|
||||
Almost all of these users are using Garage to store back-ups.
|
||||
Multimedia files are the second most selected option, which
|
||||
would explain why these clusters are so big.
|
||||
|
||||
<center><img src="big-data-kind.png" /></center>
|
||||
|
||||
These deployments are quite evenly split between not
|
||||
being geo-replicated and being geo-replicated in 2 or 3 locations.
|
||||
|
||||
<center><img src="big-n-zones.png" /></center>
|
||||
|
||||
## Satisfaction regarding garage
|
||||
|
||||
A majority of users report a high degree of satisfaction with Garage,
|
||||
but many users also reported significant flaws.
|
||||
|
||||
<center><img src="big-satisfaction.png" /></center>
|
||||
|
||||
Unsurprisingly, when clusters start becoming big enough, the most requested
|
||||
improvement is better performance around the board.
|
||||
Per-bucket levels of consistency and number of replicas was also selected
|
||||
by almost half of users.
|
||||
|
||||
<center><img src="big-wanted-features.png" /></center>
|
||||
|
||||
# Users that reported that garage had some significant flaws
|
||||
|
||||
Focusing on users that reported that Garage is usable for them but has "significant flaws",
|
||||
the two most requested features were a web administration interface and S3 versioning.
|
||||
Bucket-level ACLs (that would allow anonymous access directly from the S3 endpoint)
|
||||
and performance improvements came next.
|
||||
|
||||
<center><img src="flaws-wanted-features.png" /></center>
|
||||
|
||||
Concerning users that said that Garage has critical issues that is preventing
|
||||
them from using it, the "Other" option was the most selected answer for the
|
||||
requested features. Licensing issues allegedly preventing commercial use were
|
||||
cited by a few users (hint: it's actually a non-issue, and we will write about
|
||||
this at some point), but I think for most of these users, they have a specific
|
||||
use case in mind which is not targeted by Garage. For instance, several have
|
||||
indicated that they would need POSIX filesystem compatibility and/or the
|
||||
possibility to use Garage as a CSI driver in Kubernetes (unfortunately, this is
|
||||
mostly impossible to achieve with good performance in a geo-distributed
|
||||
environment, and the principles on which Garage is based explicitly prevents it
|
||||
from fulfilling this role).
|
||||
|
3
content/blog/2024-03-survey/update.sh
Normal file
|
@ -0,0 +1,3 @@
|
|||
for f in *.png; do
|
||||
cp -v /home/lx/Deuxfleurs/documents/survey/$f .
|
||||
done
|
|
@ -1,81 +0,0 @@
|
|||
+++
|
||||
title="Open letter to the European Commission"
|
||||
date=2024-07-14
|
||||
+++
|
||||
|
||||
*Deuxfleurs has benefitted multiple times from European grants via the NGI project, for the developpement of Garage and Aerogramme, two pieces of software
|
||||
that we have developped for the needs of our association. Today, these grants are in peril, as the European Commission wishes to finance AI projects instead.
|
||||
We relay and sign an open letter from our friends at petites singularités, that asks that the NGI project be maintained, as it provides great assistance
|
||||
for the development of free software and commons on the Internet.*
|
||||
|
||||
<!-- more -->
|
||||
|
||||
---
|
||||
|
||||
Since 2020, Next Generation Internet (NGI) programmes, part of European
|
||||
Commission's Horizon programme, fund free software in Europe using a cascade
|
||||
funding mechanism (see for example NLnet's calls). This year, according to the
|
||||
Horizon Europe working draft detailing funding programmes for 2025, we notice
|
||||
that Next Generation Internet is not mentioned any more as part of Cluster 4.
|
||||
|
||||
NGI programmes have shown their strength and importance to support the European
|
||||
software infrastructure, as a generic funding instrument to fund digital
|
||||
commons and ensure their long-term sustainability. We find this transformation
|
||||
incomprehensible, moreover when NGI has proven efficient and ecomomical to
|
||||
support free software as a whole, from the smallest to the most established
|
||||
initiatives. This ecosystem diversity backs the strength of European
|
||||
technological innovation, and maintaining the NGI initiative to provide
|
||||
structural support to software projects at the heart of worldwide innovation is
|
||||
key to enforce the sovereignty of a European infrastructure.
|
||||
|
||||
Contrary to common perception, technical innovations often originate from
|
||||
European rather than North American programming communities, and are mostly
|
||||
initiated by small-scaled organizations.
|
||||
|
||||
Previous Cluster 4 allocated 27 millions euros to:
|
||||
|
||||
- "Human centric Internet aligned with values and principles commonly shared in Europe" ;
|
||||
|
||||
- "A flourishing internet, based on common building blocks created within NGI, that enables better control of our digital life" ;
|
||||
|
||||
- "A structured eco-system of talented contributors driving the creation of new internet commons and the evolution of existing internet commons".
|
||||
|
||||
In the name of these challenges, more than 500 projects received NGI funding in
|
||||
the first 5 years, backed by 18 organisations managing these European funding
|
||||
consortia.
|
||||
|
||||
NGI contributes to a vast ecosystem, as most of its budget is allocated to fund
|
||||
third parties by the means of open calls, to structure commons that cover the
|
||||
whole Internet scope - from hardware to application, operating systems, digital
|
||||
identities or data traffic supervision. This third-party funding is not renewed
|
||||
in the current program, leaving many projects short on resources for research
|
||||
and innovation in Europe.
|
||||
|
||||
Moreover, NGI allows exchanges and collaborations across all the Euro zone
|
||||
countries as well as "widening countries"[^1], currently both a success and and an
|
||||
ongoing progress, likewise the Erasmus programme before us. NGI also
|
||||
contributes to opening and supporting longer relationships than strict project
|
||||
funding does. It encourages to implement projects funded as pilots, backing
|
||||
collaboration, identification and reuse of common elements across projects,
|
||||
interoperability in identification systems and beyond, and setting up
|
||||
development models that mix diverse scales and types of European funding
|
||||
schemes.
|
||||
|
||||
While the USA, China or Russia deploy huge public and private resources to
|
||||
develop software and infrastructure that massively capture private consumer
|
||||
data, the EU can't afford this renunciation.
|
||||
|
||||
Free and open source software, as supported by NGI since 2020, is by design the
|
||||
opposite of potential vectors for foreign interference. It lets us keep our
|
||||
data local and favors a community-wide economy and know-how, while allowing an
|
||||
international collaboration. This is all the more essential in the current
|
||||
geopolitical context: the challenge of technological sovereignty is central,
|
||||
and free software allows to address it while acting for peace and sovereignty
|
||||
in the digital world as a whole.
|
||||
|
||||
*The list of all other collectives that have also signed the letter is available
|
||||
at the following address: <https://pad.public.cat/lettre-NCP-NGI>.*
|
||||
|
||||
---
|
||||
|
||||
[^1]: As defined by Horizon Europe, widening Member States are Bulgaria, Croatia, Cyprus, the Czech Republic, Estonia, Greece, Hungary, Latvia, Lituania, Malta, Poland, Portugal, Romania, Slovakia and Slovenia. Widening associated countries (under condition of an association agreement) include Albania, Armenia, Bosnia, Feroe Islands, Georgia, Kosovo, Moldavia, Montenegro, Morocco, North Macedonia, Serbia, Tunisia, Turkey and Ukraine. Widening overseas regions are : Guadeloupe, French Guyana, Martinique, Reunion Island, Mayotte, Saint-Martin, The Azores, Madeira, the Canary Islands.
|
|
@ -1,55 +0,0 @@
|
|||
+++
|
||||
title="Help shape the upcoming administration interface for Garage"
|
||||
date=2025-03-25
|
||||
+++
|
||||
|
||||
*We released our first major stable version, Garage v1.0, almost a year ago.
|
||||
So what's next for Garage?
|
||||
A graphical user interface for cluster administration!
|
||||
Share your experience and feedback so that we can provide the best possible
|
||||
user experience.*
|
||||
|
||||
<!-- more -->
|
||||
|
||||
---
|
||||
|
||||
A first stable version is an important step for a project, so quite some time
|
||||
have been dedicated into making sure Garage reached a polished enough state.
|
||||
Now that this version has been released, it is time to decide what would be the
|
||||
next steps.
|
||||
|
||||
## Facilitate cluster administration
|
||||
|
||||
Garage is built to facilitate reliable distributed data storage for
|
||||
self-hosting and small-scale hosting situations. Making it fully usable for
|
||||
hobbyists and small organizations is one of our key goals. Therefore improving the
|
||||
cluster administration experience is an important topic to cover.
|
||||
|
||||
Creating a web admin interface is pretty logical step in that direction,
|
||||
and also addresses one of the most requested feature from last year's community
|
||||
survey. We're glad the recently validated funding from NLnet will allow us to
|
||||
dedicate full-time resources to this project!
|
||||
|
||||
This way you will be able to achieve most common operations in your web
|
||||
browser:
|
||||
|
||||
- Visualize cluster status and health
|
||||
- Add, configure or remove nodes
|
||||
- Manage buckets and access keys
|
||||
|
||||
This development will be built upon a refactor of the administration API —
|
||||
scheduled for release later this year. It will also improve the way for
|
||||
developers to build their own scripts or custom management tools by adding
|
||||
support for multiple, expirable and revocable admin API tokens.
|
||||
|
||||
## New community survey
|
||||
|
||||
As we embark on the design phase for the web admin UI, we are launching a new survey
|
||||
to get a better understanding of the various use-cases around Garage.
|
||||
If you use Garage (or not yet?), we would love to hear from you! Your responses
|
||||
will help shape the development and ensure the interface meets real-world
|
||||
needs.
|
||||
|
||||
[Answer the survey here](https://pad.deuxfleurs.fr/form/#/2/form/view/iO+I1rFlKAjh4HybfZ5dyB9lg-aLThFmBzKWXk4lfrM/)
|
||||
|
||||
We look forward to read your valuable feedback!
|
2
garage
|
@ -1 +1 @@
|
|||
Subproject commit 14d2f2b18da015508d4a1e31b2f014da5188d516
|
||||
Subproject commit 238545e56486b857fab41e0703fc9bccbcd50a2c
|
Before Width: | Height: | Size: 15 KiB |
BIN
static/icons/favicon.ico
Normal file
After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 9.5 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Garage",
|
||||
"short_name": "Garage",
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
|
@ -13,7 +13,7 @@
|
|||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ff9329",
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "browser"
|
||||
"display": "standalone"
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 16 KiB |
|
@ -1,149 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
xml:space="preserve"
|
||||
width="553.96533"
|
||||
height="170.64532"
|
||||
viewBox="0 0 553.96533 170.64532"
|
||||
sodipodi:docname="NGI0_tag.svg"
|
||||
inkscape:version="0.92.1 r15371"><metadata
|
||||
id="metadata8"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs6"><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient845"><stop
|
||||
style="stop-color:#98bf00;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop841" /><stop
|
||||
style="stop-color:#98bf00;stop-opacity:0.85958904"
|
||||
offset="1"
|
||||
id="stop843" /></linearGradient><linearGradient
|
||||
id="linearGradient1220"
|
||||
inkscape:collect="always"><stop
|
||||
id="stop1216"
|
||||
offset="0"
|
||||
style="stop-color:#98bf00;stop-opacity:1;" /><stop
|
||||
id="stop1218"
|
||||
offset="1"
|
||||
style="stop-color:#98bf00;stop-opacity:0.51" /></linearGradient><linearGradient
|
||||
x1="0"
|
||||
y1="0"
|
||||
x2="1"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-139.45511,-135.52185,-135.52185,139.45511,177.4727,131.75308)"
|
||||
spreadMethod="pad"
|
||||
id="linearGradient28"><stop
|
||||
style="stop-opacity:1;stop-color:#00afbc"
|
||||
offset="0"
|
||||
id="stop24" /><stop
|
||||
style="stop-opacity:1;stop-color:#205374"
|
||||
offset="1"
|
||||
id="stop26" /></linearGradient><clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath38"><path
|
||||
d="M 0,127.984 H 415.474 V 0 H 0 Z"
|
||||
id="path36"
|
||||
inkscape:connector-curvature="0" /></clipPath><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient845"
|
||||
id="linearGradient898"
|
||||
x1="14.915152"
|
||||
y1="14.167241"
|
||||
x2="213.75"
|
||||
y2="112.50001"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1220"
|
||||
id="linearGradient947"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.915152"
|
||||
y1="14.167241"
|
||||
x2="214.11908"
|
||||
y2="111.76186" /></defs><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
id="namedview4"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="397.77263"
|
||||
inkscape:cy="79.881046"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g40"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid924" /></sodipodi:namedview><g
|
||||
id="g10"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Logo-NGI_Tag-rgb_Editable-text"
|
||||
transform="matrix(1.3333333,0,0,-1.3333333,0,170.64533)"><g
|
||||
id="g12"
|
||||
style="fill-opacity:1;fill:url(#linearGradient898)"><g
|
||||
id="g14"
|
||||
style="fill-opacity:1.0;fill:url(#linearGradient898)"><g
|
||||
id="g20"
|
||||
style="fill-opacity:1.0;fill:url(#linearGradient898)"><g
|
||||
id="g22"
|
||||
style="fill-opacity:1.0;fill:url(#linearGradient898)"><path
|
||||
d="m 25.228,113.805 c -6.079,0 -11.051,-4.973 -11.051,-11.051 v 0 -77.523 c 0,-6.079 4.972,-11.051 11.051,-11.051 v 0 h 165.035 c 6.078,0 11.051,4.973 11.051,11.051 v 0 18.26 c 0,2.022 0.803,3.962 2.234,5.393 v 0 l 9.096,9.096 c 2.54,2.539 2.533,6.657 -0.013,9.188 v 0 l -9.067,9.017 c -1.44,1.431 -2.25,3.379 -2.25,5.409 v 0 21.16 c 0,6.078 -4.973,11.051 -11.051,11.051 v 0 z"
|
||||
style="fill:url(#linearGradient947);stroke:none;fill-opacity:1.0"
|
||||
id="path30"
|
||||
inkscape:connector-curvature="0" /></g></g></g></g><g
|
||||
id="g32"><g
|
||||
id="g34"
|
||||
clip-path="url(#clipPath38)"><g
|
||||
id="g40"
|
||||
transform="translate(175.9982,95.8645)"><path
|
||||
d="m 0,0 v 0 c 4.074,0 7.376,-3.302 7.376,-7.376 v -48.993 c 0,-4.074 -3.302,-7.376 -7.376,-7.376 -4.074,0 -7.376,3.302 -7.376,7.376 V -7.376 C -7.376,-3.302 -4.074,0 0,0"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path42"
|
||||
inkscape:connector-curvature="0" /></g><g
|
||||
id="g44"
|
||||
transform="translate(152.1193,64.9934)"><path
|
||||
d="M 0,0 H -0.506 C -0.57,0 -0.633,-0.008 -0.698,-0.01 -0.762,-0.008 -0.825,0 -0.89,0 h -7.283 c -3.929,0 -7.359,-2.965 -7.613,-6.885 -0.278,-4.296 3.124,-7.867 7.361,-7.867 0.776,0 1.343,-0.754 1.111,-1.494 -0.658,-2.088 -2.341,-3.751 -4.547,-4.333 -2.074,-0.547 -4.276,-0.821 -6.605,-0.821 -4.007,0 -7.574,0.865 -10.7,2.595 -3.127,1.73 -5.57,4.144 -7.331,7.24 -1.761,3.096 -2.641,6.617 -2.641,10.564 0,4.006 0.88,7.558 2.641,10.654 1.761,3.097 4.219,5.493 7.377,7.195 3.156,1.698 6.768,2.549 10.836,2.549 4.681,0 8.865,-1.269 12.55,-3.807 2.341,-1.612 5.524,-1.588 7.757,0.171 3.48,2.741 3.289,8.045 -0.315,10.452 -1.7,1.136 -3.538,2.112 -5.512,2.928 -4.553,1.881 -9.623,2.823 -15.208,2.823 -6.679,0 -12.69,-1.412 -18.03,-4.235 -5.344,-2.822 -9.517,-6.738 -12.522,-11.747 -3.005,-5.008 -4.508,-10.67 -4.508,-16.983 0,-6.315 1.503,-11.975 4.508,-16.984 3.005,-5.009 7.148,-8.924 12.43,-11.747 5.282,-2.824 11.231,-4.235 17.849,-4.235 4.613,0 9.197,0.699 13.751,2.095 0.045,0.014 0.091,0.028 0.136,0.042 7.104,2.202 11.884,8.86 11.884,16.297 v 9.047 C 6.486,-2.904 3.583,0 0,0"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path46"
|
||||
inkscape:connector-curvature="0" /></g><g
|
||||
id="g48"
|
||||
transform="translate(90.5807,88.5798)"><path
|
||||
d="m 0,0 v -49.176 c 0,-4.023 -3.262,-7.285 -7.286,-7.285 h -1.381 c -2.181,0 -4.247,0.977 -5.631,2.662 l -24.229,29.505 c -1.804,2.197 -5.368,0.921 -5.368,-1.922 v -22.96 c 0,-4.023 -3.261,-7.285 -7.285,-7.285 -4.023,0 -7.285,3.262 -7.285,7.285 V 0 c 0,4.024 3.262,7.285 7.285,7.285 h 1.468 c 2.184,0 4.253,-0.979 5.636,-2.669 l 24.135,-29.475 c 1.802,-2.202 5.37,-0.927 5.37,1.918 V 0 c 0,4.024 3.261,7.285 7.285,7.285 C -3.262,7.285 0,4.024 0,0"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
id="path50"
|
||||
inkscape:connector-curvature="0" /></g></g></g><g
|
||||
aria-label="Z E R O"
|
||||
transform="scale(1,-1)"
|
||||
style="font-variant:normal;font-weight:600;font-stretch:normal;font-size:31.76000023px;font-family:'Montserrat SemiBold';-inkscape-font-specification:Montserrat-SemiBold;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:0.7171717;fill-rule:nonzero;stroke:none"
|
||||
id="text56"><path
|
||||
d="m 243.58117,-73.015206 h 19.46231 v 3.613321 l -12.42176,15.02707 h 12.77844 v 4.512774 h -20.17567 v -3.613321 l 12.42176,-15.02707 h -12.06508 z"
|
||||
style=""
|
||||
id="path2325" /><path
|
||||
d="m 278.7684,-73.015206 h 16.11262 v 4.512774 h -10.14211 v 4.311172 h 9.5373 v 4.512773 h -9.5373 v 5.303672 h 10.48328 v 4.512774 H 278.7684 Z"
|
||||
style=""
|
||||
id="path2327" /><path
|
||||
d="m 320.00367,-62.749034 q 1.87645,0 2.68285,-0.697851 0.82192,-0.697852 0.82192,-2.295157 0,-1.581796 -0.82192,-2.26414 -0.8064,-0.682344 -2.68285,-0.682344 h -2.51226 v 5.939492 z m -2.51226,4.125078 v 8.761915 h -5.97051 v -23.153165 h 9.11859 q 4.57481,0 6.69938,1.535274 2.14008,1.535273 2.14008,4.853945 0,2.295156 -1.11657,3.768399 -1.10105,1.473242 -3.33418,2.171093 1.22512,0.279141 2.18661,1.271641 0.97699,0.976992 1.96949,2.9775 l 3.24113,6.575313 h -6.3582 l -2.82242,-5.753399 q -0.85293,-1.736875 -1.73688,-2.372695 -0.86844,-0.635821 -2.32617,-0.635821 z"
|
||||
style=""
|
||||
id="path2329" /><path
|
||||
d="m 357.57911,-69.107237 q -2.72938,0 -4.23364,2.016016 -1.50425,2.016015 -1.50425,5.675859 0,3.644336 1.50425,5.660352 1.50426,2.016015 4.23364,2.016015 2.74488,0 4.24914,-2.016015 1.50426,-2.016016 1.50426,-5.660352 0,-3.659844 -1.50426,-5.675859 -1.50426,-2.016016 -4.24914,-2.016016 z m 0,-4.32668 q 5.58281,0 8.7464,3.19461 3.1636,3.194609 3.1636,8.823945 0,5.613828 -3.1636,8.808438 -3.16359,3.194609 -8.7464,3.194609 -5.56731,0 -8.74641,-3.194609 -3.16359,-3.19461 -3.16359,-8.808438 0,-5.629336 3.16359,-8.823945 3.1791,-3.19461 8.74641,-3.19461 z"
|
||||
style=""
|
||||
id="path2331" /></g></g></svg>
|
Before Width: | Height: | Size: 9 KiB |
Before Width: | Height: | Size: 14 KiB |
|
@ -6,13 +6,12 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="An open-source distributed storage service you can self-host to fullfill many needs.">
|
||||
<meta name="application-name" content="{{ config.title }}">
|
||||
{% include "partials/shared/head.html" %}
|
||||
<title>
|
||||
{% block title %}{% endblock %}
|
||||
</title>
|
||||
{% block meta_html %}
|
||||
{% include "partials/shared/metadata.html" %}
|
||||
{% endblock %}
|
||||
{% include "partials/shared/head.html" %}
|
||||
</head>
|
||||
|
||||
<body class="has-background-white">
|
||||
|
|
|
@ -3,9 +3,6 @@
|
|||
{% block title %}
|
||||
{{ page.title }} | Garage blog
|
||||
{% endblock %}
|
||||
{% block meta_html %}
|
||||
{% include "partials/shared/metadata-article.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<section id="blogpost-section" class="section">
|
||||
|
|
|
@ -12,11 +12,6 @@
|
|||
<div class="grid grid-cols-1 xl:grid-cols-5">
|
||||
{% include "partials/doc/global_toc.html" %}
|
||||
<div class="col-span-full xl:col-span-3" style="min-height:85vh;">
|
||||
|
||||
<div class="pt-8">
|
||||
{% include "partials/shared/community_survey.html" %}
|
||||
</div>
|
||||
|
||||
<article class="box my-12 px-6 lg:px-8 xl:px-12">
|
||||
<div class="flex flex-col mb-10 bg-gray-100 rounded-r shadow-sm w-full xl:w-max">
|
||||
<div class="flex flex-col border-l-4 border-garage-orange py-2 px-4 relative">
|
||||
|
|
|
@ -14,11 +14,6 @@ Downloads | {{ config.title }}
|
|||
</div>
|
||||
|
||||
<div class="mx-auto max-w-7xl px-4">
|
||||
|
||||
<div class="pt-16">
|
||||
{% include "partials/shared/community_survey.html" %}
|
||||
</div>
|
||||
|
||||
<div id="releases-container" class="py-24 space-y-20">
|
||||
<div id="docker-images" class="space-y-4">
|
||||
<h2 class="text-garage-gray text-xl font-semibold">Deploy with Docker</h2>
|
||||
|
|
|
@ -29,10 +29,6 @@
|
|||
</a>
|
||||
</div>
|
||||
|
||||
<div class="pt-4">
|
||||
{% include "partials/shared/community_survey.html" %}
|
||||
</div>
|
||||
|
||||
<div class="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-x-32 py-12">
|
||||
<a href="{{config.base_url}}/documentation/connect/websites/" class="group flex flex-col items-center justify-center p-2">
|
||||
<img src="{{ get_url(path='images/host.png') }}" class="transform group-hover:translate-y-2 transition duration-500">
|
||||
|
@ -221,12 +217,8 @@
|
|||
<div class="w-full flex flex-col items-center justify-center shadow-inner">
|
||||
<div class="px-8 py-24 space-y-8 text-garage-gray max-w-4xl mx-auto">
|
||||
<h2 class="text-2xl text-garage-orange font-semibold">Sponsors and funding</h2>
|
||||
<p>Garage has benefitted multiple times from public funding:
|
||||
<ul>
|
||||
<li>2021-2022: <a class="text-garage-orange underline" href="https://pointer.ngi.eu/" target="_blank">NGI POINTER</a> provided funding for 3 full-time employees for one year</li>
|
||||
<li>2023-2024: <a class="text-garage-orange underline" href="https://nlnet.nl/entrust/" target="_blank">NLnet / NGI0 Entrust</a> provided funding for 1 full-time employee for one year</li>
|
||||
<li>2025: <a class="text-garage-orange underline" href="https://nlnet.nl/commonsfund/" target="_blank">NLnet / NGI0 Commons Fund</a> provided funding for 1.5 full-time employee for one year</li>
|
||||
</ul>
|
||||
<p>Garage has received funding from <a class="text-garage-orange underline" href="https://pointer.ngi.eu/" target="_blank">NGI POINTER</a> (3 full-time employees for one year, in 2021-2022),
|
||||
and from <a class="text-garage-orange underline" href="https://nlnet.nl/entrust/" target="_blank">NLnet / NGI0 Entrust</a> (1 full-time employee for one year, in 2023-2024).
|
||||
</p>
|
||||
<p>If you want to participate in funding Garage development,
|
||||
either through donation or support contract,
|
||||
|
@ -237,24 +229,16 @@
|
|||
</p>
|
||||
<p class="flex flex-row justify-around">
|
||||
<img src="{{ get_url(path='images/nlnet.svg') }}" class="w-1/3" alt="NLnet logo">
|
||||
<img src="{{ get_url(path='images/NGI0_tag.svg') }}" class="w-1/3" alt="NGI0 Entrust logo">
|
||||
<img src="{{ get_url(path='images/NGI0Entrust_tag.svg') }}" class="w-1/3" alt="NGI0 Entrust logo">
|
||||
</p>
|
||||
<p class="italic">This project has received funding from the European Union's Horizon 2021 research and innovation programme
|
||||
within the framework of the NGI-POINTER Project funded under grant agreement N° 871528.</p>
|
||||
<p class="italic">
|
||||
This project has received funding from the NGI Zero Entrust Fund,
|
||||
a fund established by NLnet with financial support from the
|
||||
<p class="italic">This project has received funding from the NGI0
|
||||
Entrust Fund, a fund established by NLnet with financial support from the
|
||||
European Commission's Next Generation Internet programme, under the aegis of DG
|
||||
Communications Networks, Content and Technology under grant agreement No
|
||||
101069594.
|
||||
</p>
|
||||
<p class="italic">
|
||||
This project has received funding from the NGI Zero Commons Fund,
|
||||
a fund established by NLnet with financial support from the
|
||||
European Commission's Next Generation Internet programme, under the aegis of DG
|
||||
Communications Networks, Content and Technology under grant agreement No
|
||||
101135429.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -3,16 +3,11 @@
|
|||
<div class="flex">
|
||||
<div class="py-1"><svg class="fill-current h-6 w-6 text-teal-500 mr-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.93 17.07A10 10 0 1 1 17.07 2.93 10 10 0 0 1 2.93 17.07zm12.73-1.41A8 8 0 1 0 4.34 4.34a8 8 0 0 0 11.32 11.32zM9 11V9h2v6H9v-4zm0-6h2v2H9V5z"/></svg></div>
|
||||
<div>
|
||||
<p class="font-bold">Garage Community Survey 2025</p>
|
||||
<p class="text-sm">
|
||||
Our next Garage milestone (funded by <a href="https://nlnet.nl/">NLnet</a>) aims to deliver an improved experience for administrating Garage clusters,
|
||||
including a new web admin UI which is in development.
|
||||
To this end, we are collecting feedback from our users in order to provide the best possible user experience!
|
||||
We would be glad to have your input with this new edition of our Community Survey.
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://pad.deuxfleurs.fr/form/#/2/form/view/iO+I1rFlKAjh4HybfZ5dyB9lg-aLThFmBzKWXk4lfrM/" class="text-garage-orange font-bold hover:underline">Answer the survey here</a>
|
||||
</p>
|
||||
<p class="font-bold">Garage pre-1.0 community survey</p>
|
||||
<p class="text-sm"> As part of our plans for the release of Garage v1.0, we are launching a survey to gather feedback from Garage users and potential users on all fronts, in order to improve Garage's reliability, user experience, and suitability for various application domains.</p>
|
||||
<p>
|
||||
<a href="https://pad.deuxfleurs.fr/form/#/2/form/view/bGZkUeZ5wxOuTSlP3nRJeTbCQlwdqUpF3ggN6vGqRds/" class="text-garage-orange font-bold hover:underline">Answer the survey here</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
{% if current_url %}
|
||||
<link rel="canonical" href="{{ current_url }}">
|
||||
{% if config.extra.favicon.webmanifest %}
|
||||
<link href='{{ config.extra.favicon.webmanifest }}' rel="manifest" />
|
||||
{% endif %}
|
||||
{% if config.extra.favicon.favicon_16x16 %}
|
||||
<link href='{{ config.extra.favicon.favicon_16x16 }}' rel="icon" sizes="16x16" type="image/png" />
|
||||
{% endif %}
|
||||
{% if config.extra.favicon.favicon_32x32 %}
|
||||
<link href='{{ config.extra.favicon.favicon_32x32 }}' rel="icon" sizes="32x32" type="image/png" />
|
||||
{% endif %}
|
||||
{% if config.extra.favicon.apple_touch_icon %}
|
||||
<link href='{{ config.extra.favicon.apple_touch_icon }}' rel="apple-touch-icon" sizes="180x180" />
|
||||
{% endif %}
|
||||
<!-- Web app -->
|
||||
<meta name="theme-color" content="#ff9329">
|
||||
<meta name="color-scheme" content="light only">
|
||||
<meta name="application-name" content="{{ config.title }}">
|
||||
<link href='{{ config.extra.metadata.webmanifest }}' rel="manifest" />
|
||||
<!-- Icons -->
|
||||
<link rel="shortcut icon" href="{{ config.extra.metadata.favicon_ico }}" />
|
||||
<link rel="icon" type="image/svg+xml" href="{{ config.extra.metadata.favicon_svg }}" />
|
||||
<link href='{{ config.extra.metadata.favicon_16x16 }}' rel="icon" sizes="16x16" type="image/png" />
|
||||
<link href='{{ config.extra.metadata.favicon_32x32 }}' rel="icon" sizes="32x32" type="image/png" />
|
||||
<link href='{{ config.extra.metadata.apple_touch_icon }}' rel="apple-touch-icon" sizes="180x180" />
|
||||
|
||||
<link href="{{ get_url(path='style.css') }}" rel="stylesheet" />
|
||||
|
||||
{% block user_custom_stylesheet %}{% endblock %}
|
||||
|
||||
{% if config.extra.katex.enabled %}
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
<meta name="description" content="{{ page.summary | striptags | truncate(length=150, end="…") | safe }}">
|
||||
<meta name="author" content="{{ config.extra.author.name }}">
|
||||
<meta property="og:author" content="{{ config.extra.author.name }}">
|
||||
|
||||
<!-- structured (micro)data -->
|
||||
<meta itemprop="description" content="{{ page.summary | striptags | truncate(length=150, end="…") | safe }}">
|
||||
<meta itemprop="author" content="{{ config.extra.author.name }}">
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:site_name" content="{{ config.extra.organization.name }} blog">
|
||||
<meta property="og:title" content="{{ page.title }} | Garage blog">
|
||||
<meta property="og:description" content="{{ page.summary | striptags | truncate(length=150, end="…") | safe }}">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:author" content="{{ config.extra.author.name }}">
|
||||
<meta property="article:published_time" content="{{ page.date | date(format='%Y-%m-%dT%H:%M:%S%.3fZ') }}">
|
||||
{% if current_url %}
|
||||
<meta property="og:url" content="{{ current_url }}">
|
||||
<meta property="og:image" content="{{ config.base_url }}{{ config.extra.metadata.cover_default }}">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="650">
|
||||
<meta property="og:image:alt" content="Garage, an open-source distributed object storage service tailored for self-hosting">
|
||||
{% endif %}
|
|
@ -1,17 +0,0 @@
|
|||
<meta name="description" content="{{ config.description }}">
|
||||
<meta name="author" content="{{ config.extra.author.name }}">
|
||||
<!-- structured (micro)data -->
|
||||
<meta property="og:site_name" content="{{ config.extra.organization.name }}">
|
||||
<meta itemprop="description" content="{{ config.description }}">
|
||||
<meta itemprop="author" content="{{ config.extra.author.name }}">
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:title" content="{% if page and page.title %}{{ page.title }}{% elif section and section.title %}{{ section.title }}{% else %}{{ config.extra.author.name}} - {{ config.description}}{% endif %}">
|
||||
<meta property="og:type" content="website">
|
||||
{% if current_url %}
|
||||
<meta property="og:url" content="{{ current_url }}">
|
||||
<meta property="og:image" content="{{ config.base_url }}{{ config.extra.metadata.cover_default }}">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="650">
|
||||
<meta property="og:image:alt" content="Garage, an open-source distributed object storage service tailored for self-hosting">
|
||||
{% endif %}
|