diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml index 15687b1..7025da0 100644 --- a/.github/workflows/docs-deploy.yml +++ b/.github/workflows/docs-deploy.yml @@ -1,10 +1,12 @@ name: docs-deploy on: - schedule: - - cron: "0 0 * * 1" push: branches: - main +# pull_request: +# types: +# - opened +# - reopened workflow_dispatch: concurrency: group: "docs" @@ -13,7 +15,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: '0' - uses: actions/setup-python@v4 @@ -24,5 +26,5 @@ jobs: - run: pip install mkdocs-git-authors-plugin - run: pip install mkdocs-enumerate-headings-plugin - run: pip install mkdocs-glightbox - - run: pip install mkdocs-print-site-plugin + #- run: pip install mkdocs-print-site-plugin - run: mkdocs gh-deploy --force diff --git a/.vscode/settings.json b/.vscode/settings.json index 6ab89d0..4ee7cf8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,6 +18,7 @@ "realpath", "SAMEORIGIN", "sqlite", + "Traefik", "Vhosts" ], "cSpell.enableFiletypes": [ diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..fbf4531 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.linkstack.org diff --git a/docs/CNAME b/docs/CNAME index fbf4531..b8b12c6 100644 --- a/docs/CNAME +++ b/docs/CNAME @@ -1 +1,2 @@ docs.linkstack.org + diff --git a/docs/setup/edit-terms-privacy-and-contact.md b/docs/configuration/edit-terms-privacy-and-contact.md similarity index 98% rename from docs/setup/edit-terms-privacy-and-contact.md rename to docs/configuration/edit-terms-privacy-and-contact.md index 6ed4e5e..2173d93 100644 --- a/docs/setup/edit-terms-privacy-and-contact.md +++ b/docs/configuration/edit-terms-privacy-and-contact.md @@ -1,7 +1,7 @@ -# Edit Terms, Privacy and Contact - -By default, LinkStack includes a footer consisting of Terms, Privacy and Contact pages. These page’s content can be changed on the Admin Panel under Admin>Pages. A graphical text editor is included in this project to edit content on these pages, but basic HTML syntax is accepted. - -For each section, a basic template is provided. Depending on your case and or local laws, you might want to change this. - -The footer can be disabled entirely in the config. +# Edit Terms, Privacy and Contact + +By default, LinkStack includes a footer consisting of Terms, Privacy and Contact pages. These page’s content can be changed on the Admin Panel under Admin>Pages. A graphical text editor is included in this project to edit content on these pages, but basic HTML syntax is accepted. + +For each section, a basic template is provided. Depending on your case and or local laws, you might want to change this. + +The footer can be disabled entirely in the config. diff --git a/docs/docker/reverse-proxies.md b/docs/docker/reverse-proxies.md new file mode 100644 index 0000000..f97d6d5 --- /dev/null +++ b/docs/docker/reverse-proxies.md @@ -0,0 +1,80 @@ +# Reverse Proxies + +## Traefik +add this labels to your Docker Compose File +``` +labels: + - "traefik.enable=true" + - "traefik.http.routers.name-ui.rule=Host(`domain.de`)" + - "traefik.http.routers.name-ui.entrypoints=https" + - "traefik.http.routers.name-ui.tls=true" + - "traefik.http.routers.name-ui.tls.certresolver=le" + - "traefik.http.routers.name-ui.service=name-ui" + - "traefik.http.services.name-ui.loadBalancer.server.port=443" + - "traefik.http.services.name-ui.loadbalancer.server.scheme=https" + - "traefik.http.routers.name-ui.middlewares=name-head,default@file" + - "traefik.http.middlewares.name-head.headers.customrequestheaders.X-Forwarded-Proto=https" + - "traefik.http.middlewares.name-head.headers.customResponseHeaders.X-Robots-Tag=none" + - "traefik.http.middlewares.name-head.headers.customResponseHeaders.Strict-Transport-Security=max-age=63072000" + - "traefik.http.middlewares.name-head.headers.stsSeconds=31536000" + - "traefik.http.middlewares.name-head.headers.accesscontrolalloworiginlist=*" + - "traefik.docker.network=traefik_web" +``` +Start your Docker Compose and navigate to your "persistent storage" and +change the .env search for FORCE_HTTPS=false (line 85) and set this to "true" + +For this to work, the following must be set in the Traefik Config (static config) +``` +serversTransport: + insecureSkipVerify: true +``` + +## Nginx +Make sure to use HTTPS to access your container to avoid mixed content errors +``` +server { + listen 443 ssl; + listen [::]:443 ssl; + listen 80; + listen [::]:80; + server_name your.domain.name; + + location / { + # Replace with the IP address and port number of your Docker container. + proxy_pass https://127.0.0.1:443; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-VerifiedViaNginx yes; + proxy_read_timeout 60; + proxy_connect_timeout 60; + proxy_redirect off; + + # Specific for websockets: force the use of HTTP/1.1 and set the Upgrade header + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_cache_bypass $http_upgrade; + proxy_set_header X-Forwarded-Proto $scheme; + + # Fixes Mixed Content errors. + add_header 'Content-Security-Policy' 'upgrade-insecure-requests'; + } +} +``` + +## Caddy +Make sure to use HTTPS for redirection to avoid mixed content errors. + +Add this to your Caddyfile: +```Caddyfile +links.example.com { + reverse_proxy https://localhost:443 { + transport http { + tls_insecure_skip_verify + } + } +} +``` diff --git a/docs/docker/setup.md b/docs/docker/setup.md new file mode 100644 index 0000000..9260e58 --- /dev/null +++ b/docs/docker/setup.md @@ -0,0 +1,88 @@ +# Docker Setup + +You can find the offical Docker Version of LinkStack [here](https://github.com/linkstackorg/linkstack-docker). + +The docker version of LinkStack retains all the features and customization options of the [original version](https://github.com/JulianPrieber/littlelink-custom). + +This docker is based on [Alpine Linux](https://www.alpinelinux.org/), a Linux distribution designed to be small, simple and secure. The web server is running [Apache2](https://www.apache.org/), a free and open-source cross-platform web server software. The docker comes with [PHP 8.2](https://www.php.net/releases/8.2/en.php) for high compatibility and performance. + +## Deployment +The Docker Image exposes HTTP on port 80 and HTTPS on Port 443. You can modify your deployment via the following optional environment variables + +|Variable|Function|default Value| +|---|---|---| +|SERVER_ADMIN|The admin's email address|you@example.com| +|HTTP_SERVER_NAME|the http [server name](https://httpd.apache.org/docs/2.4/fr/mod/core.html#servername) of apache2|localhost| +|HTTPS_SERVER_NAME|the https [server name](https://httpd.apache.org/docs/2.4/fr/mod/core.html#servername) of apache2|localhost| +|LOG_LEVEL|The [log level](https://httpd.apache.org/docs/2.4/fr/mod/core.html#loglevel) of apache2|info| +|TZ|The [timezone](https://www.php.net/manual/timezones.php)|UTC| +|PHP_MEMORY_LIMIT|The php [memory-limit](https://www.php.net/manual/ini.core.php#ini.memory-limit)|256M| +|UPLOAD_MAX_FILESIZE| The [upload-max-filesize](https://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize) of PHP|8M| + +### Supported Architectures +- linux/amd64 +- linux/arm/v6 +- linux/arm/v7 +- linux/arm/v8 +- linux/arm64 + +### Docker Run Deployment + +```shell +docker volume create linkstack + +docker run --detach \ + --name linkstack \ + --publish 80:80 \ + --publish 443:443 \ + --restart unless-stopped \ + --mount source=linkstack,target=/htdocs \ + linkstackorg/linkstack +``` + +customized: + +```shell +docker run --detach \ + --name linkstack \ + --hostname linkstack \ + --env HTTP_SERVER_NAME="www.example.xyz" \ + --env HTTPS_SERVER_NAME="www.example.xyz" \ + --env SERVER_ADMIN="admin@example.xyz" \ + --env TZ="Europe/Berlin" \ + --env PHP_MEMORY_LIMIT="512M" \ + --env UPLOAD_MAX_FILESIZE="8M" \ + --publish 80:80 \ + --publish 443:443 \ + --restart unless-stopped \ + --mount source=linkstack,target=/htdocs \ + linkstackorg/linkstack +``` + +### Docker Compose Stack + +```yaml +version: '3' +services: + linkstack: + image: linkstackorg/linkstack:latest + environment: + - TZ=Europe/Berlin + - SERVER_ADMIN=admin@example.xyz + - HTTP_SERVER_NAME=www.example.xyz + - HTTPS_SERVER_NAME=www.example.xyz + - LOG_LEVEL=info + - PHP_MEMORY_LIMIT=512M + - UPLOAD_MAX_FILESIZE=16M + ports: + - "80:80" + - "443:443" + volumes: + - linkstack:/htdocs + restart: unless-stopped +volumes: + linkstack: +``` + +## Docker Bind Mounts +It's also possible to run the image with [Docker Bind Mounts](https://docs.docker.com/storage/bind-mounts/) instead of [Docker Volumes](https://docs.docker.com/storage/volumes/). But you have to download the [latest release of linkstack](https://github.com/linkstackorg/linkstack/releases/latest/download/linkstack.zip) by yourself and place it in the mounted directory if you do that. Be sure to give the files the owner and group `apache` with the uid 100 and gid 101. diff --git a/docs/faq.md b/docs/faq.md index 7204bfc..baac340 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,18 +2,20 @@ ## What is LinkStack? -LinkStack is a modification of LinkStack, an open source project with the purpose of enabling people to host their own alternatives to services like Linktree and many.link. +LinkStack is a modification of LittleLink Admin, an open source project with the purpose of enabling people to host their own alternatives to services like Linktree and many.link. + +Until April 2023, the LinkStack project was known as "LittleLink Custom." ## Why does LinkStack exist? -This project is envisioned to be a drag and drop alternative to other solutions. No coding or command line setup required; just plug and play. +This project aims to be a drag and drop alternative to other solutions, making it more accessible and ultimately easier to use for first-time users to set up and use it. No coding or command line setup required; just plug and play on a server (that meets the requirements) of your choice. ## What can LinkStack do for me? Many social media platforms only allow you to add one link, with this you can simply link to your LinkStack page and have all the links you want displayed on one site. You can share all your links to your social media platform or -important links to easy accessible and hosted on your own web-server or web-hosting provider. On this website, other users can register and create their own links, you can access other user via the Admin Panel. +important links to easy accessible and hosted on your own web-server or web-hosting provider. On this website, other users can register and create their own links, you can access other users via the Admin Panel. ## What do I need to use LinkStack? @@ -21,7 +23,30 @@ important links to easy accessible and hosted on your own web-server or web-ho To host your own instance of LinkStack, you will need a web server running at least PHP 8.0. -## Don’t have a web server? +## Can I still use LinkStack if I don’t have a web server? No problem! We also have a Docker version available. + Do you want to use your own Domain or want a private instance? Sponsor LinkStack on GitHub and get free access to your own private instance. + +## Do I have to host LinkStack myself? + +Self-hosting is not the only option available for using LinkStack. + +The project offers various tiers of [hosted instances](https://linkstack.org/hosted) for GitHub Sponsors. Additionally, you can find [instances of LinkStack](https://linkstack.org/instances) hosted by others in the community. + +## How can I update LinkStack? + +LinkStack can be updated from the administrator control panel (if you are an admin). Updates can be installed manually or handled by the automatic updater. + +## After installing LinkStack, how do I access the admin area? + +After installation, you can access the administrator panel by visiting the `/login` page and signing in with the administrator credentials set when using the setup wizard. See also the [admin access](/access-admin) page. + +## How can I contribute to LinkStack? + +For source code contributions and to report bugs/security issues, please [visit the GitHub](https://github.com/LinkStackOrg/LinkStack) repository. + +Not a developer or interested in hacking code? You can also contribute to the [documentation on GitHub](https://github.com/LinkStackOrg/docs). + +LinkStack also takes donations on [multiple platforms](https://linkstack.org/donate/), including cryptocurrency donations. Thank you for your support! diff --git a/docs/getting-started/download.md b/docs/getting-started/download.md new file mode 100644 index 0000000..934b852 --- /dev/null +++ b/docs/getting-started/download.md @@ -0,0 +1,12 @@ +# Download + +There are multiple versions of Linkstack. + +You can always find the latest release of LinkStack with all update notes and new features on GitHub [here](https://github.com/LinkStackOrg/LinkStack/releases/latest). + + +Alternative download the latest release here: + +[![Download button](/assets/img/download/download_latest.png){.nglb}](https://github.com/linkstackorg/linkstack/releases/latest/download/linkstack.zip) + +*This file contains the LinkStack installation folder and a README file.* diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 515bc2a..c73dc6b 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -5,19 +5,19 @@ Create a personalized and professional profile page. Showcase all your important **Get LinkStack:** -- [Use it online](https://https://linksta.cc) -- [Use we Web Version](https://linkstack.org/get-started) +- [Use it online](https://linksta.cc) +- [Use the Web Version](https://linkstack.org/get-started) - [Get the Docker Version](https://linkstack.org/docker) We offer a public instance that you can use to get started with our platform. You can sign up for a free account on our public instance and start creating a fully functional website with all the features and capabilities of our platform. You can customise the look and feel of your website by choosing from our pre-made templates and designs. And if you decide to set up your own instance later, you can easily export your data. So, there is no reason not to try our public instance first. -[**Public instance**](https://https://linksta.cc) +[**Public instance**](https://linksta.cc) -If you want to have full control over your website, you can set up your own web server. This option requires some technical knowledge, but it gives you complete control over your website. You can choose your own hosting provider, install the necessary software and plugins, and customise your website to your liking. You can find instructions on how to set up our platform on your own web server by following the link [here](https://github.com/LinkStackOrg/LinkStack#readme). +If you want to have full control over your website, you can set up your own web server. This option requires some technical knowledge, but it gives you complete control over your website. You can choose your own hosting provider, install the necessary software and plugins, and customise your website to your liking. You can find instructions on how to set up our platform on your own web server by following the link [here](./requirements.md). [**Web version**](https://linkstack.org/get-started) -Docker is a containerization platform that makes it easy to set up and run applications in isolated environments. With Docker, you can easily deploy our platform on your own server without having to worry about the technical details of setting up a web server. You can find instructions on how to set up our platform on Docker by following the link [here](https://github.com/LinkStackOrg/ls-docker#readme). +Docker is a containerization platform that makes it easy to set up and run applications in isolated environments. With Docker, you can easily deploy our platform on your own server without having to worry about the technical details of setting up a web server. You can find instructions on how to set up our platform on Docker by following the link [here](https://github.com/linkstackorg/linkstack-docker). [**Docker version**](https://linkstack.org/docker) diff --git a/docs/getting-started/other-webservers.md b/docs/getting-started/other-webservers.md deleted file mode 100644 index d6364be..0000000 --- a/docs/getting-started/other-webservers.md +++ /dev/null @@ -1,74 +0,0 @@ -# Other webservers - -## NGINX - -**This is just an example, we assume that you have prior experience setting up NGINX Vhosts!** - -
- -[For further instructions, please refer to the official NGINX documentation provided by Laravel.](https://laravel.com/docs/9.x/deployment#nginx) - -
- -**To ensure proper security, access to certain configuration files must be prevented.** - -Example configuration: - -``` -server { - listen 80; - listen [::]:80; - server_name example.com; - root /path/to/example.com; - - add_header X-Frame-Options "SAMEORIGIN"; - add_header X-Content-Type-Options "nosniff"; - - index index.php; - - charset utf-8; - - location / { - try_files $uri $uri/ /index.php?$query_string; - } - - location = /favicon.ico { access_log off; log_not_found off; } - location = /robots.txt { access_log off; log_not_found off; } - - error_page 404 /index.php; - - location ~ \.php$ { - fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; - fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - include fastcgi_params; - } - - location ~ /\.(?!well-known).* { - deny all; - } - - -location ~ ^\. { -deny all; -} - -location ~ \.sqlite$ { -deny all; -} - -location ~ \.env$ { -deny all; -} - -location ~ /\.htaccess { -allow all; -} - -} -``` - -## More webservers - -Currently, no documentation is provided for other web server solutions. - -Please refer to the Laravel documentation regarding the setup process for your specific web server solution. diff --git a/docs/getting-started/requirements.md b/docs/getting-started/requirements.md index 62e7822..6c9b35f 100644 --- a/docs/getting-started/requirements.md +++ b/docs/getting-started/requirements.md @@ -2,13 +2,13 @@ **LinkStack under optimal conditions is a simple drag and drop solution with no further configuration required.** -Here are all requirements listed, for you to check. +Listed below are all the reqiured modules for LinkStack to run. ## Webserver - Apache web server/web host with ``.htaccess`` support - Apache Module ``mod_rewrite`` -- At least PHP 8.0 or above +- At least PHP 8.1 or above - Read and write access to files in the root directory, as well as files in the directories ``storage`` and ``database``. - Access over HTTPS/valid SSL certificate @@ -16,20 +16,23 @@ Here are all requirements listed, for you to check. ## Required PHP modules: -- BCMath PHP Extension -- Ctype PHP Extension -- cURL PHP Extension -- DOM PHP Extension -- Fileinfo PHP Extension -- JSON PHP Extension -- Mbstring PHP Extension -- OpenSSL PHP Extension -- PCRE PHP Extension -- PDO PHP Extension -- Tokenizer PHP Extension -- XML PHP Extension +- BCMath PHP Extension +- Ctype PHP Extension +- cURL PHP Extension +- DOM PHP Extension +- Fileinfo PHP Extension +- JSON PHP Extension +- Mbstring PHP Extension +- OpenSSL PHP Extension +- PCRE PHP Extension +- PDO PHP Extension +- Tokenizer PHP Extension +- XML PHP Extension Depending on your database type: - SQLite PHP Extension (default, no configuration required) - MySQL PHP Extension + + +*This documentation only applies to Linkstack instances deployed on a websever. If your instance is deployed as a Docker container, please take a look at the docker specific documentation.* diff --git a/docs/setup/other-webservers.md b/docs/setup/other-webservers.md new file mode 100644 index 0000000..1d9be22 --- /dev/null +++ b/docs/setup/other-webservers.md @@ -0,0 +1,145 @@ +# Other webservers + +## NGINX + +**This is just an example, we assume that you have prior experience setting up NGINX Vhosts!** + +
+ +[For further instructions, please refer to the official NGINX documentation provided by Laravel.](https://laravel.com/docs/9.x/deployment#nginx) + +
+ +**To ensure proper security, access to certain configuration files must be prevented.** + +Example configuration: + +``` +server { + listen 80; + listen [::]:80; + server_name example.com; + root /path/to/example.com; + + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-Content-Type-Options "nosniff"; + + index index.php; + + charset utf-8; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + error_page 404 /index.php; + + location ~ \.php$ { + fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.(?!well-known).* { + deny all; + } + + +location ~ ^\. { +deny all; +} + +location ~ \.sqlite$ { +deny all; +} + +location ~ \.env$ { +deny all; +} + +location ~ /\.htaccess { +allow all; +} + +} +``` + +## Apache2 + +**This is just an example, we assume that you have prior experience setting up Apache Vhosts!** + +**Access to configuration files is already denied via `.htaccess` files in the LinkStack root directory.** + +
+ +```xml + + ServerName example.com + ServerAlias www.example.com + ServerAdmin webmaster@localhost + DocumentRoot /path/to/example.com + DirectoryIndex index.htm index.html index.php + ErrorLog /var/log/httpd/linkstack/error.log + CustomLog /var/log/httpd/linkstack/access.log combined + + + Options FollowSymLinks + AllowOverride None + + + + Options -Indexes +MultiViews +FollowSymLinks +ExecCGI + Require all granted + AllowOverride all + + +``` +## Litespeed + +**This is just an .htaccess example, we assume that you have prior experience setting up Litespeed - Cyberpanel!** + +``` + + + Options -MultiViews + + + RewriteEngine On + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)/$ /$1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + +# Restrict access to critical files + +Order allow,deny +Deny from all + + + Order allow,deny + Deny from all + + + Order allow,deny + Deny from all + +``` + +## More webservers + +Currently, no documentation is provided for other web server solutions. + +Please refer to the Laravel documentation regarding the setup process for your specific web server solution. diff --git a/docs/getting-started/setup.md b/docs/setup/setup.md similarity index 97% rename from docs/getting-started/setup.md rename to docs/setup/setup.md index d201589..022e79d 100644 --- a/docs/getting-started/setup.md +++ b/docs/setup/setup.md @@ -1,14 +1,14 @@ -# Setup - -The installation of LinkStack is tailored to be as easy and user-friendly as possible. - -In most cases, you will just be able to drop the LinkStack installation folder onto your web server, then visit this page with a browser to follow the setup wizard. - -It will: - -1. Check the server dependencies -2. Setup the database -3. Create the admin user -4. Configure the app - -**To ensure everything works as expected, please read the [installation requirements](./requirements.md).** +# Setup + +The installation of LinkStack is tailored to be as easy and user-friendly as possible. + +In most cases, you will just be able to drop the LinkStack installation folder onto your web server, then visit this page with a browser to follow the setup wizard. + +It will: + +1. Check the server dependencies +2. Setup the database +3. Create the admin user +4. Configure the app + +**To ensure everything works as expected, please read the [installation requirements](./requirements.md).** diff --git a/mkdocs.yml b/mkdocs.yml index 1387664..11aa088 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -102,14 +102,18 @@ nav: - Getting started: - getting-started/index.md - Requirements: getting-started/requirements.md - - Setup: getting-started/setup.md - - Other webservers: getting-started/other-webservers.md + - Download: getting-started/download.md + - Setup: # - First steps: setup/first-steps.md # - Getting to know the Admin Panel: setup/getting-to-know-the-admin-panel.md - - Edit Terms, Privacy and Contact: setup/edit-terms-privacy-and-contact.md + - Setup: setup/setup.md + - Docker Setup: docker/setup.md + - Reverse Proxies: docker/reverse-proxies.md + - Other webservers: setup/other-webservers.md + # - Disable registration: setup/disable-registration.md - # - Configuration: + - Configuration: # - configuration/index.md # - Email verification: configuration/email-verification.md # - Internal notifications: configuration/internal-notifications.md @@ -121,6 +125,8 @@ nav: # - Cache Settings: configuration/cache-settings.md # - Miscellaneous Settings: configuration/miscellaneous-settings.md # - Social login: configuration/social-login.md + - Edit Terms, Privacy and Contact: configuration/edit-terms-privacy-and-contact.md + extra: social: @@ -136,17 +142,11 @@ extra: - icon: fontawesome/brands/discord link: https://discord.linkstack.org name: Discord - - icon: simple/matrix - link: https://matrix.linkstack.org - name: Matrix - - icon: simple/lemmy - link: https://lemmy.ml/c/linkstack - name: Lemmy - icon: fontawesome/solid/heart link: https://linkstack.org/donate name: Sponsor us -copyright: Copyright © 2022 - 2023 LittleLink Custom | 2023 - present LinkStack +copyright: Copyright © 2022 - 2023 LittleLink Custom | 2023 - present LinkStack extra_css: - assets/css/style.css @@ -192,4 +192,4 @@ plugins: - nglb auto_caption: true caption_position: bottom - - print-site + #- print-site