mirror of
https://git.joinfirefish.org/firefish/firefish.git
synced 2024-05-19 06:41:10 +02:00
Merge branch 'develop' into redis
This commit is contained in:
commit
07444ae7c1
|
@ -42,6 +42,8 @@ cargo --version
|
||||||
|
|
||||||
### PostgreSQL and PGroonga
|
### PostgreSQL and PGroonga
|
||||||
|
|
||||||
|
Firefish requires PostgreSQL v12 or later. We recommend that you install v12.x for the same reason as Node.js.
|
||||||
|
|
||||||
PostgreSQL install instructions can be found at [this page](https://www.postgresql.org/download/).
|
PostgreSQL install instructions can be found at [this page](https://www.postgresql.org/download/).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|
|
@ -1,9 +1,36 @@
|
||||||
# Install Firefish
|
# Install Firefish
|
||||||
|
|
||||||
This document shows an example procedure for installing Firefish on Debian 12. Note that there is much room for customizing the server setup; this document merely demonstrates a simple installation.
|
Firefish depends on the following software.
|
||||||
|
|
||||||
|
## Runtime dependencies
|
||||||
|
|
||||||
|
- At least [NodeJS](https://nodejs.org/en/) v18.17.0 (v20/v21 recommended)
|
||||||
|
- At least [PostgreSQL](https://www.postgresql.org/) v12 (v16 recommended) with [PGroonga](https://pgroonga.github.io/) extension
|
||||||
|
- At least [Redis](https://redis.io/) v7
|
||||||
|
- Web Proxy (one of the following)
|
||||||
|
- Caddy (recommended)
|
||||||
|
- Nginx (recommended)
|
||||||
|
- Apache
|
||||||
|
- [FFmpeg](https://ffmpeg.org/) for video transcoding (**optional**)
|
||||||
|
- Caching server (**optional**, one of the following)
|
||||||
|
- [DragonflyDB](https://www.dragonflydb.io/)
|
||||||
|
- [KeyDB](https://keydb.dev/)
|
||||||
|
- Another [Redis](https://redis.io/) server
|
||||||
|
|
||||||
|
## Build dependencies
|
||||||
|
|
||||||
|
- At least [Rust](https://www.rust-lang.org/) v1.74
|
||||||
|
- C/C++ compiler & build tools
|
||||||
|
- `build-essential` on Debian/Ubuntu Linux
|
||||||
|
- `base-devel` on Arch Linux
|
||||||
|
- [Python 3](https://www.python.org/)
|
||||||
|
|
||||||
|
This document shows an example procedure for installing these dependencies and Firefish on Debian 12. Note that there is much room for customizing the server setup; this document merely demonstrates a simple installation.
|
||||||
|
|
||||||
If you want to use the pre-built container image, please refer to [`install-container.md`](./install-container.md).
|
If you want to use the pre-built container image, please refer to [`install-container.md`](./install-container.md).
|
||||||
|
|
||||||
|
If you do not prepare your environment as document, be sure to meet the minimum dependencies given at the bottom of the page.
|
||||||
|
|
||||||
Make sure that you can use the `sudo` command before proceeding.
|
Make sure that you can use the `sudo` command before proceeding.
|
||||||
|
|
||||||
## 1. Install dependencies
|
## 1. Install dependencies
|
||||||
|
|
|
@ -2,8 +2,8 @@ import * as fs from "node:fs";
|
||||||
import * as stream from "node:stream";
|
import * as stream from "node:stream";
|
||||||
import * as util from "node:util";
|
import * as util from "node:util";
|
||||||
import got, * as Got from "got";
|
import got, * as Got from "got";
|
||||||
import { httpAgent, httpsAgent, StatusError } from "./fetch.js";
|
|
||||||
import { config } from "@/config.js";
|
import { config } from "@/config.js";
|
||||||
|
import { getAgentByHostname, StatusError } from "./fetch.js";
|
||||||
import chalk from "chalk";
|
import chalk from "chalk";
|
||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
import IPCIDR from "ip-cidr";
|
import IPCIDR from "ip-cidr";
|
||||||
|
@ -40,10 +40,7 @@ export async function downloadUrl(url: string, path: string): Promise<void> {
|
||||||
send: timeout,
|
send: timeout,
|
||||||
request: operationTimeout, // whole operation timeout
|
request: operationTimeout, // whole operation timeout
|
||||||
},
|
},
|
||||||
agent: {
|
agent: getAgentByHostname(new URL(url).hostname),
|
||||||
http: httpAgent,
|
|
||||||
https: httpsAgent,
|
|
||||||
},
|
|
||||||
http2: false, // default
|
http2: false, // default
|
||||||
retry: {
|
retry: {
|
||||||
limit: 0,
|
limit: 0,
|
||||||
|
|
|
@ -171,6 +171,25 @@ export function getAgentByUrl(url: URL, bypassProxy = false) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get agent by Hostname
|
||||||
|
* @param hostname Hostname
|
||||||
|
* @param bypassProxy Allways bypass proxy
|
||||||
|
*/
|
||||||
|
export function getAgentByHostname(hostname: string, bypassProxy = false) {
|
||||||
|
if (bypassProxy || (config.proxyBypassHosts || []).includes(hostname)) {
|
||||||
|
return {
|
||||||
|
http: _http,
|
||||||
|
https: _https,
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
http: httpAgent,
|
||||||
|
https: httpsAgent,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class StatusError extends Error {
|
export class StatusError extends Error {
|
||||||
public statusCode: number;
|
public statusCode: number;
|
||||||
public statusMessage?: string;
|
public statusMessage?: string;
|
||||||
|
|
Loading…
Reference in a new issue