Host a Wolfree mirror site
Go to file
2023-09-30 13:37:56 +00:00
docusaurus enhance security by blocking Wolfram's tracker 2023-09-30 13:37:56 +00:00
rust enhance security by blocking Wolfram's tracker 2023-09-30 13:37:56 +00:00
typescript 2023-09-26 2023-09-27 11:34:23 +00:00
.gitattributes 2023-09-26 2023-09-27 11:34:23 +00:00
Dockerfile 2023-09-26 2023-09-27 11:34:23 +00:00
LICENSE 2023-09-26 2023-09-27 11:34:23 +00:00
README.md improve the conciseness of the self-hosting guide 2023-09-30 13:05:08 +00:00

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:

  1. Install a terminal emulator. If you are unfamiliar with terminal emulators, refer to the "Command line crash course" for guidance.

  2. Install Git and Docker Engine.

  3. 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

  4. 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.
    
  5. 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

  6. 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
    
  7. 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

  8. 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/
    
  9. 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:

  1. Install Git and Docker Engine.

  2. 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
    
  3. Open the following file with a text editor:

    rust/wolfree_patch_libredirect/src/main.rs

  4. 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.
    
  5. Build the image and run the container with Docker Engine:

    docker build --progress=plain --tag wolfree wolfree-dockerfile
    docker run --publish 80:80 wolfree
    
  6. 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:

  1. Install NPM.

  2. Initialize a Docusaurus project with the classic template and the TypeScript variant:

    npm --yes -- init docusaurus docusaurus classic . --typescript
    
  3. Install MUI, a React component library:

    npm --prefix ./docusaurus/ -- install @mui/material @emotion/react @emotion/styled
    

Glossary of file extensions

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

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.