Compare commits
6 commits
Author | SHA1 | Date | |
---|---|---|---|
68863f4b94 | |||
|
6616f246a4 | ||
|
ec5ad0ff41 | ||
|
f990745a42 | ||
|
0fbae5f9ab | ||
|
249f5da269 |
4 changed files with 41 additions and 10 deletions
23
README.md
23
README.md
|
@ -74,16 +74,14 @@ If you have access to a server that supports one of the sources below, I recomme
|
||||||
- Install with [nvm](https://github.com/nvm-sh/nvm)
|
- Install with [nvm](https://github.com/nvm-sh/nvm)
|
||||||
- 🐘 At least [PostgreSQL](https://www.postgresql.org/) v12
|
- 🐘 At least [PostgreSQL](https://www.postgresql.org/) v12
|
||||||
- 🍱 At least [Redis](https://redis.io/) v6 (v7 recommend)
|
- 🍱 At least [Redis](https://redis.io/) v6 (v7 recommend)
|
||||||
|
- Web Proxy (one of the following)
|
||||||
|
- 🍀 Nginx (recommended)
|
||||||
|
- 🪶 Apache
|
||||||
|
|
||||||
### 😗 Optional dependencies
|
### 😗 Optional dependencies
|
||||||
|
|
||||||
- [FFmpeg](https://ffmpeg.org/) for video transcoding
|
- [FFmpeg](https://ffmpeg.org/) for video transcoding
|
||||||
- [ElasticSearch](https://www.elastic.co/elasticsearch/) for full-text search
|
- [ElasticSearch](https://www.elastic.co/elasticsearch/) for full-text search
|
||||||
- OpenSearch/Sonic are not supported as of right now
|
|
||||||
- Management (choose one of the following)
|
|
||||||
- 🛰️ [pm2](https://pm2.io/)
|
|
||||||
- 🐳 [Docker](https://docker.com)
|
|
||||||
- Service manager (systemd, openrc, etc)
|
|
||||||
|
|
||||||
### 🏗️ Build dependencies
|
### 🏗️ Build dependencies
|
||||||
|
|
||||||
|
@ -138,13 +136,22 @@ psql postgres -c "create database calckey with encoding = 'UTF8';"
|
||||||
|
|
||||||
For migrating from Misskey v13, Misskey v12, and Foundkey, read [this document](https://codeberg.org/calckey/calckey/src/branch/develop/docs/migrate.md).
|
For migrating from Misskey v13, Misskey v12, and Foundkey, read [this document](https://codeberg.org/calckey/calckey/src/branch/develop/docs/migrate.md).
|
||||||
|
|
||||||
## 🍀 NGINX
|
## 🌐 Web proxy
|
||||||
|
|
||||||
|
### 🍀 Nginx (recommended)
|
||||||
|
|
||||||
- Run `sudo cp ./calckey.nginx.conf /etc/nginx/sites-available/ && cd /etc/nginx/sites-available/`
|
- Run `sudo cp ./calckey.nginx.conf /etc/nginx/sites-available/ && cd /etc/nginx/sites-available/`
|
||||||
- Edit `calckey.nginx.conf` to reflect your instance properly
|
- Edit `calckey.nginx.conf` to reflect your instance properly
|
||||||
- Run `sudo cp ./calckey.nginx.conf ../sites-enabled/`
|
- Run `sudo ln -s ./calckey.nginx.conf ../sites-enabled/calckey.nginx.conf`
|
||||||
- Run `sudo nginx -t` to validate that the config is valid, then restart the NGINX service.
|
- Run `sudo nginx -t` to validate that the config is valid, then restart the NGINX service.
|
||||||
|
|
||||||
|
### 🪶 Apache
|
||||||
|
|
||||||
|
- Run `sudo cp ./calckey.apache.conf /etc/apache2/sites-available/ && cd /etc/apache2/sites-available/`
|
||||||
|
- Edit `calckey.apache.conf` to reflect your instance properly
|
||||||
|
- Run `sudo a2ensite calckey.apache` to enable the site
|
||||||
|
- Run `sudo service apache2 restart` to reload apache2 configuration
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## 🚀 Build and launch!
|
## 🚀 Build and launch!
|
||||||
|
@ -164,7 +171,7 @@ pm2 start "NODE_ENV=production pnpm run start" --name Calckey
|
||||||
|
|
||||||
- When editing the config file, please don't fill out the settings at the bottom. They're designed *only* for managed hosting, not self hosting. Those settings are much better off being set in Calckey's control panel.
|
- When editing the config file, please don't fill out the settings at the bottom. They're designed *only* for managed hosting, not self hosting. Those settings are much better off being set in Calckey's control panel.
|
||||||
- Port 3000 (used in the default config) might be already used on your server for something else. To find an open port for Calckey, run `for p in {3000..4000}; do ss -tlnH | tr -s ' ' | cut -d" " -sf4 | grep -q "${p}$" || echo "${p}"; done | head -n 1`. Replace 3000 with the minimum port and 4000 with the maximum port if you need it.
|
- Port 3000 (used in the default config) might be already used on your server for something else. To find an open port for Calckey, run `for p in {3000..4000}; do ss -tlnH | tr -s ' ' | cut -d" " -sf4 | grep -q "${p}$" || echo "${p}"; done | head -n 1`. Replace 3000 with the minimum port and 4000 with the maximum port if you need it.
|
||||||
- I'd recommend you use a S3 Bucket/CDN for Object Storage, especially if you use Docker.
|
- I'd recommend you use a S3 Bucket/CDN for Object Storage, especially if you use Docker.
|
||||||
- I'd ***strongly*** recommend against using CloudFlare, but if you do, make sure to turn code minification off.
|
- I'd ***strongly*** recommend against using CloudFlare, but if you do, make sure to turn code minification off.
|
||||||
- For push notifications, run `npx web-push generate-vapid-keys`, then put the public and private keys into Control Panel > General > ServiceWorker.
|
- For push notifications, run `npx web-push generate-vapid-keys`, then put the public and private keys into Control Panel > General > ServiceWorker.
|
||||||
- For translations, make a [DeepL](https://deepl.com) account and generate an API key, then put it into Control Panel > General > DeepL Translation.
|
- For translations, make a [DeepL](https://deepl.com) account and generate an API key, then put it into Control Panel > General > DeepL Translation.
|
||||||
|
|
13
calckey.apache.conf
Normal file
13
calckey.apache.conf
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Replace example.tld with your domain
|
||||||
|
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName example.tld
|
||||||
|
# For WebSocket
|
||||||
|
ProxyPass "/streaming" "ws://127.0.0.1:3000/streaming/"
|
||||||
|
# Proxy to Node
|
||||||
|
ProxyPass "/" "http://127.0.0.1:3000/"
|
||||||
|
ProxyPassReverse "/" "http://127.0.0.1:3000/"
|
||||||
|
ProxyPreserveHost On
|
||||||
|
# For files proxy
|
||||||
|
AllowEncodedSlashes On
|
||||||
|
</VirtualHost>
|
|
@ -146,6 +146,12 @@ export const NoteRepository = db.getRepository(Note).extend({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (note.visibility === "home" || note.visibility === "public") {
|
||||||
|
if (meId == null) {
|
||||||
|
return !note.localOnly
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,13 @@ export function generateVisibilityQuery(
|
||||||
if (me == null) {
|
if (me == null) {
|
||||||
q.andWhere(
|
q.andWhere(
|
||||||
new Brackets((qb) => {
|
new Brackets((qb) => {
|
||||||
qb.where(`note.visibility = 'public'`).orWhere(
|
qb.where(`note.localOnly = 'false'`)
|
||||||
`note.visibility = 'home'`,
|
.andWhere(
|
||||||
|
new Brackets((qb) => {
|
||||||
|
qb.where(`note.visibility = 'home'`).orWhere(
|
||||||
|
`note.visibility = 'public'`
|
||||||
|
)
|
||||||
|
})
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Reference in a new issue