diff --git a/README.md b/README.md index f9198c06c0..5f7c6a2101 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,237 @@ +
+ + +

ぷよすきー (Puyoskey)

+ +**🌎 [Puyoskey](https://git.v-sli.me/HidemaruOwO/puyoskey) is a customized federated SNS based on [Sharkey](https://joinsharkey.org/)** + +
+ +## About Puyoskey 🦈 + +Puyoskey is a customized version of Sharkey with specific UI modifications to enhance the user experience. Some of the key customizations include: + +- Simplified instance ticker display +- Customized timeline interface +- Enhanced server metrics visualization +- Modified UI components + +See the complete list of customizations in our [customization documentation](./docs/customized.md). + +## Installation Guide 💨 + +
+ Install dependencies for AlmaLinux 9 Server ⛏️ + +Install CLI dependencies: + +```bash +dnf install -y epel-release +dnf config-manager --set-enabled crb +dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm -y +dnf install --nogpgcheck https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm -y + +dnf update -y +dnf install -y git make automake gcc gcc-c++ kernel-devel kernel-headers ffmpeg vim jemalloc +dnf groupinstall -y "Development Tools" +``` + +Install Node.js and pnpm: + +```bash +curl -fsSL https://rpm.nodesource.com/setup_22.x | bash - +dnf install nodejs -y + +corepack enable +# To type y +pnpm +``` + +
+ +### Manual Installation + +Create user for Puyoskey: + +```bash +useradd -m -D puyoskey +``` + +Switch to created user: + +```bash +sudo -iu puyoskey +``` + +Clone the Puyoskey repository, and copy the example configuration file: + +```bash +git clone --recurse-submodules -b master https://git.v-sli.me/HidemaruOwO/puyoskey.git +cd puyoskey +pnpm install --frozen-lockfile +cp .config/example.yml .config/default.yml +``` + +Build Puyoskey: + +```bash +pnpm run build +``` + +### Database Setup (PostgreSQL) + +Attach to psql: + +```bash +sudo -u postgres psql +``` + +```sql +CREATE DATABASE puyoskey WITH ENCODING = 'UTF8'; +CREATE USER puyoskey WITH ENCRYPTED PASSWORD '{YOUR_PASSWORD}'; +GRANT ALL PRIVILEGES ON DATABASE puyoskey TO puyoskey; +ALTER DATABASE puyoskey OWNER TO puyoskey; +\q +``` + +Edit configuration file: + +```bash +vim .config/default.yml +``` + +Create the schema: + +```bash +pnpm run init +``` + +Start Puyoskey: + +```bash +pnpm start +``` + +
+Run with systemd (you should change user to root) + +Create a file `/etc/systemd/system/puyoskey.service` containing: + +```bash +[Unit] +Description=Puyoskey daemon + +[Service] +Type=simple +User=puyoskey +ExecStart=/bin/pnpm start +WorkingDirectory=/home/puyoskey/puyoskey +Environment="NODE_OPTIONS=--max-old-space-size=8192" +Environment="NODE_ENV=production" +Environment="LD_PRELOAD=/usr/lib64/libjemalloc.so.2" +TimeoutSec=60 +StandardOutput=journal +StandardError=journal +SyslogIdentifier=puyoskey +Restart=always + +[Install] +WantedBy=multi-user.target +``` + +Enable and run daemon service: + +```bash +systemctl daemon-reload +systemctl enable --now puyoskey.service +``` + +Optional: For periodic restart process + +Create a file `/etc/systemd/system/puyoskey.timer`: + +```bash +[Unit] +Description = Puyoskey restart timer + +[Timer] +OnCalendar = daily +Unit=puyoskey-restart.service + +[Install] +WantedBy = timers.target +``` + +Create a file `/etc/systemd/system/puyoskey-restart.service`: + +```bash +[Unit] +Description=Restart puyoskey service + +[Service] +Type=oneshot +ExecStart=/usr/bin/systemctl restart puyoskey.service + +[Install] +WantedBy=multi-user.target +``` + +Enable timer: + +```bash +systemctl enable puyoskey.timer +``` + +
+ +## Update Guide 💫 + +```bash +git checkout master +git pull +git submodule update --init +pnpm install --frozen-lockfile +pnpm run build +pnpm run migrate +``` + +## Troubleshooting 💣 + +If you encounter errors, try rebuilding Puyoskey: + +```bash +pnpm run clean-all +pnpm rebuild +``` + +## Updating from Upstream Sharkey 🦈 + +When Sharkey is updated, Puyoskey needs to follow suit: + +```bash +# If you have not yet added sharkey remote +git remote add base https://activitypub.software/TransFem-org/Sharkey.git + +git fetch base +git checkout -b stable base/stable + +# Switch to puyoskey branch +git checkout master +# Merge from stable branch +git merge --squash stable + +# Resolve any conflicts +# Commit with an appropriate message +git commit -m ":recycle: Merge updates from upstream as v2024.11.2" + +git push origin master +``` + +--- + +
+Original Sharkey README +
Sharkey logo @@ -28,20 +262,21 @@ ## ✨ Features + - **ActivityPub support**\ -Not on Sharkey? No problem! Not only can Sharkey instances talk to each other, but you can make friends with people on other networks like Mastodon and Pixelfed! + Not on Sharkey? No problem! Not only can Sharkey instances talk to each other, but you can make friends with people on other networks like Mastodon and Pixelfed! - **Federated Backgrounds and Music status**\ -You can add a background to your profile as well as a music status via ListenBrainz, show everyone what music you are currently listening to + You can add a background to your profile as well as a music status via ListenBrainz, show everyone what music you are currently listening to - **Mastodon API**\ -Sharkey implements the Mastodon API unlike normal Misskey + Sharkey implements the Mastodon API unlike normal Misskey - **UI/UX Improvements**\ -Sharkey makes some UI/UX improvements to make it easier to navigate + Sharkey makes some UI/UX improvements to make it easier to navigate - **Sign-Up Approval**\ -With Sharkey, you can enable sign-ups, subject to manual moderator approval and mandatory user-provided reasons for joining. + With Sharkey, you can enable sign-ups, subject to manual moderator approval and mandatory user-provided reasons for joining. - **Rich Web UI**\ - Sharkey has a rich and easy to use Web UI! - It is highly customizable, from changing the layout and adding widgets to making custom themes. - Furthermore, plugins can be created using AiScript, an original programming language. + Sharkey has a rich and easy to use Web UI! + It is highly customizable, from changing the layout and adding widgets to making custom themes. + Furthermore, plugins can be created using AiScript, an original programming language. - And much more...
@@ -51,3 +286,5 @@ With Sharkey, you can enable sign-ups, subject to manual moderator approval and ## Documentation Sharkey Documentation can be found at [Sharkey Documentation](https://docs.joinsharkey.org/docs/install/fresh/) + +