docusaurus | ||
rust | ||
typescript | ||
.gitattributes | ||
Dockerfile | ||
LICENSE | ||
README.md |
Self-hosting Wolfree instances with Docker Engine
This guide provides a step-by-step procedure for self-hosting Wolfree. You will use Docker CLI to interact with the Docker daemon through a terminal emulator. Docker Engine automates the execution of the static site generator and running the web server.
How to self-host Wolfree
To self-host a mirror site of Wolfree instances using Docker Engine, follow these steps:
-
Install a terminal emulator. If you are unfamiliar with terminal emulators, refer to the "Command line crash course" for guidance.
-
Install Git and Docker Engine.
-
Download the source code by executing one of the following commands. Each command will download the source code from a different web server. If one of the commands fails, try the next one until the download succeeds.
git clone https://gitea.com/wolfree/wolfree-dockerfile.git
git clone https://try.gitea.io/wolfree/wolfree-dockerfile.git
git clone https://codeberg.org/wolfree/wolfree-dockerfile.git
git clone https://git.disroot.org/wolfree/wolfree-dockerfile.git
git clone https://next.forgejo.org/wolfree/wolfree-dockerfile.git
git clone https://git.kiwifarms.net/wolfree/wolfree-dockerfile.git
git clone http://it7otdanqu7ktntxzm427cba6i53w6wlanlh23v5i3siqmos47pzhvyd.onion/wolfree/wolfree-dockerfile.git
Reference: git clone
-
Wait until Git outputs the resolving message similar to the following:
Receiving objects: 100% (100/100), 1.00 KiB | 1.00 KiB/s, done. Resolving deltas: 100% (100/100), done.
-
Build a Docker image by executing the following command:
docker build --progress=plain --tag wolfree wolfree-dockerfile
This command will generate the website using a static site generator.
Reference: docker build
-
Wait until Docker Engine outputs the exporting message similar to the following:
#35 exporting to image #35 exporting layers done #35 writing image sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef done #35 naming to docker.io/library/wolfree done #35 DONE 0.0s
-
Run a Docker container by executing the following command:
docker run --publish 80:80 wolfree
This command will host the website using a web server.
Reference: docker run
-
Wait until the web server outputs the success message similar to the following:
> docusaurus@0.0.0 serve > docusaurus serve --host localhost --port 80 [SUCCESS] Serving "build" directory at: http://localhost:80/
-
Access the mirror site locally on the same computer where the Docker container runs. Open a web browser and navigate to http://localhost/. On the home page of the mirror site, enter a math problem in the text box and click the submit button.
Congratulations! You have successfully self-hosted Wolfree.
How to self-host Libredirect-compatible instances
By default, Wolfree instances are paywall-bypassing and incompatible with Libredirect. To make them Libredirect-compatible and respect paywalls, follow these steps:
-
Install Git and Docker Engine.
-
Download the source code with Git:
git clone https://gitea.com/wolfree/wolfree-dockerfile.git git clone https://try.gitea.io/wolfree/wolfree-dockerfile.git git clone https://codeberg.org/wolfree/wolfree-dockerfile.git git clone https://git.disroot.org/wolfree/wolfree-dockerfile.git git clone https://next.forgejo.org/wolfree/wolfree-dockerfile.git git clone https://git.kiwifarms.net/wolfree/wolfree-dockerfile.git git clone http://it7otdanqu7ktntxzm427cba6i53w6wlanlh23v5i3siqmos47pzhvyd.onion/wolfree/wolfree-dockerfile.git
-
Open the following file with a text editor:
rust/wolfree_patch_libredirect/src/main.rs
-
Remove the line containing the
return
keyword. Save the change. The changed code should look like this:// Remove the following line to make the instances Libredirect-compatible. // Remove the previous line to make the instances Libredirect-compatible.
-
Build the image and run the container with Docker Engine:
docker build --progress=plain --tag wolfree wolfree-dockerfile docker run --publish 80:80 wolfree
-
Browse http://localhost/. Your instances should have become Libredirect-compatible and respect paywalls. If they remain paywall-bypassing and incompatible with Libredirect, please report the problem in the issue trackers of the repositories.
Troubleshooting dependency graphs
To regenerate docusaurus/package.json
, follow these steps:
-
Install NPM.
-
Initialize a Docusaurus project with the classic template and the TypeScript variant:
npm --yes -- init docusaurus docusaurus classic . --typescript
-
Install MUI, a React component library:
npm --prefix ./docusaurus/ -- install @mui/material @emotion/react @emotion/styled
Glossary of file extensions
.md
/.mdx
: MarkDown XML.js
/.jsx
: JavaScript XML.ts
/.tsx
: TypeScript XML.rs
: Rust Programming Language
Helpful resources for new developers
If you're new to web development, here are some websites and tools to get you started:
-
MDN Web Docs: A comprehensive resource for web developers, offering guides, tutorials, and references for various web technologies.
-
Chrome DevTools - Chrome Developers: A set of web developer tools built directly into the Google Chrome browser, providing practical features to inspect and debug web applications.
-
TypeScript: JavaScript With Syntax For Types.: A strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.
-
Web.Dev: A learning platform by Google that offers web development courses, providing practical examples to help you improve your skills.
-
Desktop/PC - Privacy Guides: A list of recommended Linux distributions with powerful terminal emulators pre-installed by default, empowering you with automating deployment, scaling, and management of containerized applications.
These resources will help you get started. Happy learning!
UX writing tips
-
Style guide: UX writing best practices: Writing UI text that anyone can understand.
-
UX writing: study guide: How to write and present information that aligns with users' needs and online reading behaviors.
-
UX basics: study guide: The basics of user experience.
-
Web UX: study guide: How users interact with the web and how to design web user experiences.
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.