mirror of
https://github.com/fmhy/edit.git
synced 2025-11-28 08:51:08 +11:00
195 lines
No EOL
5.6 KiB
Markdown
195 lines
No EOL
5.6 KiB
Markdown
---
|
|
title: Selfhosting FMHY
|
|
description: This guide will help you set up and run your own instance of FMHY locally.
|
|
---
|
|
|
|
# Selfhosting
|
|
|
|
:::warning
|
|
Do note that you **must** differentiate your instance from the official site (fmhy.net) to avoid confusion. Steps to do so are given below.
|
|
:::
|
|
|
|
This guide will help you set up and run your own instance of FMHY locally.
|
|
|
|
### Docker (Experimental)
|
|
|
|
To run a local instance, you will need to install [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/).
|
|
|
|
After installing both, run the following commands:
|
|
|
|
```bash
|
|
git clone https://github.com/fmhy/edit.git
|
|
cd edit
|
|
sudo docker compose up --build
|
|
```
|
|
|
|
It might take a few minutes to build the image and start the container, running at port 4173.
|
|
|
|
### Nix Flake
|
|
|
|
You can use [nix](https://nixos.org/) to set up a development environment, we have a [flake](https://nixos.wiki/wiki/Flakes) that setups `nodejs` and `pnpm`.
|
|
|
|
1. Fork the repository and clone it to your local machine with `git clone https://github.com/fmhy/edit.git`.
|
|
2. Run `nix flake update` to update the flake lock file.
|
|
3. Run `nix develop` to enter the development environment.
|
|
4. Make your changes.
|
|
5. Exit the development environment by running `exit`.
|
|
|
|
### Manually
|
|
|
|
You will need to install the following:
|
|
- [Git](https://git-scm.com/downloads)
|
|
- [Node.js](https://nodejs.org/en/download/) - Install version 21.7.3
|
|
- [pnpm 9.12.2+](https://pnpm.io/installation)
|
|
|
|
#### Step 1: Clone the Repository
|
|
|
|
```bash
|
|
git clone https://github.com/fmhy/edit.git
|
|
cd edit
|
|
```
|
|
|
|
#### Step 2: Install Dependencies
|
|
|
|
Install project dependencies using pnpm:
|
|
|
|
```bash
|
|
pnpm install
|
|
```
|
|
|
|
#### Step 3: Development Mode
|
|
|
|
To run the project in development mode:
|
|
|
|
```bash
|
|
# Start the documentation site in dev mode
|
|
pnpm docs:dev
|
|
|
|
# Start the API in dev mode (if needed)
|
|
pnpm api:dev
|
|
```
|
|
|
|
The development server will start at `http://localhost:5173` by default.
|
|
|
|
#### Step 4: Building for Production
|
|
|
|
You will need to update:
|
|
- `meta`: Constant in `docs/.vitepress/constants.ts`
|
|
- `name`: Name of your instance
|
|
- `hostname`: Your domain
|
|
- `description`: Description of your instance
|
|
- `tags`: Opengraph tags
|
|
- `build`: Build options (can be configured with [Environment Variables](/other/selfhosting#environment-variables))
|
|
- `docs/index.md`
|
|
- `title`
|
|
- `description`
|
|
- `hero.name`
|
|
- `hero.tagline`
|
|
|
|
To build the project for production:
|
|
|
|
```bash
|
|
# Build the documentation site
|
|
pnpm docs:build
|
|
|
|
# Build the API (if needed) using the Node.js preset
|
|
NITRO_PRESET=node pnpm api:build
|
|
```
|
|
|
|
#### Step 5: Preview Production Build
|
|
|
|
To preview the production build locally:
|
|
|
|
```bash
|
|
# Preview the documentation site
|
|
pnpm docs:preview
|
|
|
|
# Preview the API (if needed)
|
|
pnpm api:preview
|
|
```
|
|
|
|
#### Step 6: Deploy
|
|
|
|
See the [VitePress deployment guide](https://vitepress.dev/guide/deploy) for more info.
|
|
|
|
### API Deployment
|
|
|
|
If you want to deploy the API component (feedback system), you'll need to set up Cloudflare Workers and KV storage.
|
|
|
|
#### Prerequisites
|
|
|
|
- A [Cloudflare account](https://dash.cloudflare.com/sign-up)
|
|
- [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/install-and-update/) installed globally
|
|
|
|
#### Step 1: Configure Wrangler
|
|
|
|
Update `wrangler.toml` with your Cloudflare account information:
|
|
|
|
1. Get your account ID from the Cloudflare dashboard (found in the right sidebar)
|
|
2. Replace the `account_id` value in `wrangler.toml` with your account ID
|
|
3. If you're using a custom domain, keep `workers_dev = false` and update the `routes` section
|
|
4. If you're deploying to `*.workers.dev`, set `workers_dev = true` and remove the `routes` section
|
|
|
|
#### Step 2: Create KV Namespace
|
|
|
|
Create a KV namespace for data storage:
|
|
|
|
```bash
|
|
npx wrangler kv:namespace create STORAGE
|
|
```
|
|
|
|
This command will return a namespace ID. Copy this ID and replace the `id` value in the `[[kv_namespaces]]` section of `wrangler.toml` (line 14).
|
|
|
|
**Note:** If you want to deploy without running Wrangler locally (e.g., in CI/CD), you'll need to:
|
|
1. Create the KV namespace manually in the Cloudflare dashboard
|
|
2. Update both the `account_id` and `id` values in `wrangler.toml` in your fork
|
|
|
|
#### Step 3: Build and Deploy
|
|
|
|
Build and deploy the API:
|
|
|
|
```bash
|
|
# Build the API
|
|
pnpm api:build
|
|
|
|
# Deploy to Cloudflare Workers
|
|
pnpm api:deploy
|
|
```
|
|
|
|
The API will be deployed to your configured domain or `*.workers.dev` subdomain.
|
|
|
|
#### Rate Limiting (Optional)
|
|
|
|
The rate limiter binding requires setup through the Cloudflare dashboard. You can skip this for basic deployments or configure it later through the Workers dashboard under the "Rate limiting" section.
|
|
|
|
#### Environment Variables
|
|
|
|
##### Build-time Variables (for Documentation)
|
|
|
|
These variables control what gets included when building the documentation site:
|
|
|
|
- `FMHY_BUILD_NSFW` - Enable NSFW sidebar entry (experimental)
|
|
- `FMHY_BUILD_API` - Enable API component for feedback system
|
|
|
|
##### Runtime Variables (for API Worker)
|
|
|
|
These variables are used by the deployed Cloudflare Worker API:
|
|
|
|
- `WEBHOOK_URL` - Discord webhook URL for posting feedback messages (required for API feedback functionality)
|
|
|
|
#### Troubleshooting
|
|
|
|
1. If you encounter Node.js version issues, ensure you're using Node.js 21+
|
|
2. For pnpm-related issues, ensure you're using pnpm 9+
|
|
3. If you encounter build issues, try clearing cache:
|
|
```bash
|
|
# Linux
|
|
rm -rf docs/.vitepress/cache
|
|
|
|
# PowerShell
|
|
rm -r -fo docs/.vitepress/cache
|
|
```
|
|
|
|
### Reverse Proxy
|
|
|
|
You should be able to use any reverse proxy with this vitepress website, but find a reasonable config for an nginx server [in the repo here](https://github.com/fmhy/edit/blob/main/.github/assets/nginx.conf) |