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.gitgit clone https://try.gitea.io/wolfree/wolfree-dockerfile.gitgit clone https://codeberg.org/wolfree/wolfree-dockerfile.gitgit clone https://git.disroot.org/wolfree/wolfree-dockerfile.gitgit clone https://next.forgejo.org/wolfree/wolfree-dockerfile.gitgit clone https://git.kiwifarms.net/wolfree/wolfree-dockerfile.gitgit clone http://it7otdanqu7ktntxzm427cba6i53w6wlanlh23v5i3siqmos47pzhvyd.onion/wolfree/wolfree-dockerfile.gitReference: 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-dockerfileThis 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 wolfreeThis 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 returnkeyword. 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.