Summary
This post is a part of Lemmy 0.16.7 on OpenBSD 7.2 about Lemmy.
Premise
The server is OpenBSD and Rust (rustlang) is installed. Also, there is _lemmy
user whose home directory is /var/lemmy
.
Environment
Tutorial
Lemmy-UI server
Prepare Node.js
Switch back to your own user if you are acting as _lemmy
:
$ exit
Then run:
$ doas pkg_add yarn
The output was:
quirks-6.42 signed on 2023-01-13T18:22:41Z
yarn-1.22.18:brotli-1.0.9p0: ok
yarn-1.22.18:gmake-4.3: ok
yarn-1.22.18:flock-20110525p1: ok
yarn-1.22.18:icu4c-71.1v0: ok
yarn-1.22.18:openssl-1.1.1q: ok
yarn-1.22.18:libcares-1.18.1: ok
yarn-1.22.18:node-16.17.1v0: ok
yarn-1.22.18: ok
--- +node-16.17.1v0 -------------------
You may wish to add /usr/local/lib/node_modules/npm/man to /etc/man.conf
--- +openssl-1.1.1q -------------------
You may wish to add /usr/local/lib/eopenssl11/man to /etc/man.conf
Build Lemmy-UI server
Switch to _lemmy
:
$ doas su - _lemmy
Then get the source:
$ git clone https://github.com/LemmyNet/lemmy-ui.git --recursive --branch 0.16.7 --single-branch
The output was:
Cloning into 'lemmy-ui'...
remote: Enumerating objects: 4489, done.
remote: Total 4489 (delta 0), reused 0 (delta 0), pack-reused 4489
Receiving objects: 100% (4489/4489), 2.39 MiB | 5.86 MiB/s, done.
Resolving deltas: 100% (3371/3371), done.
Note: switching to '44f22ad3b7f7afb17cd0ac6ee293b11bbbdf6087'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
(...)
Submodule 'lemmy-translations' (https://github.com/lemmynet/lemmy-translations) registered for path 'lemmy-translations'
Cloning into '/var/lemmy/lemmy-ui/lemmy-translations'...
remote: Enumerating objects: 2208, done.
remote: Counting objects: 100% (546/546), done.
remote: Compressing objects: 100% (151/151), done.
Receiving objects: 100% (2208/2208), 678.71 KiB | 2.71 MiB/s, done.
remote: Total 2208 (delta 439), reused 464 (delta 395), pack-reused 1662
Resolving deltas: 100% (1820/1820), done.
Submodule path 'lemmy-translations': checked out 'a099f9f02d9c8a7e24349154880b5515e3c45362'
Go inside:
$ cd lemmy-ui
Run to get the dependencies:
$ yarn install --pure-lockfile
The output was:
yarn install v1.22.18
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
[4/5] Linking dependencies...
(...)
[5/5] Building fresh packages...
warning Your current version of Yarn is out of date. The latest version is "1.22.19", while you're on "1.22.18".
$ husky install
husky - Git hooks installed
Done in 59.79s.
Then run to build:
$ yarn build:prod
The output was:
yarn run v1.22.18
$ yarn clean && node generate_translations.js
$ yarn run rimraf dist
$ /var/lemmy/lemmy-ui/node_modules/.bin/rimraf dist
$ webpack --mode=production
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
(...)
Entrypoint main [big] 927 KiB = styles/styles.css 16.7 KiB js/server.js 910 KiB
(...)
Entrypoint main [big] 1.78 MiB = styles/styles.css 16.7 KiB js/client.js 1.77 MiB
(...)
webpack 5.72.0 compiled successfully in 35738 ms
Done in 37.47s.
To follow the guide printed above, run in addition:
$ npx browserslist@latest --update-db
You will be asked:
Need to install the following packages:
browserslist@4.21.4
Ok to proceed? (y) y
The output was:
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
Latest version: 1.0.30001444
Installed version: 1.0.30001298
Removing old caniuse-lite from lock file
Installing new caniuse-lite version
$ yarn add -W caniuse-lite
(...)
caniuse-lite has been successfully updated
Target browser changes:
- and_chr 96
+ and_chr 108
(...)
- ios_saf 12.2-12.5
+ ios_saf 16.2
(...)
- safari 13.1
+ safari 16.2
(...)
npm notice New major version of npm available! 8.15.0 -> 9.3.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.3.0
npm notice Run npm install -g npm@9.3.0 to update!
npm notice
Now you are ready to start Lemmy UI server:
$ yarn start
The output was:
arn run v1.22.18
$ yarn build:dev --watch
$ yarn clean && node generate_translations.js
$ yarn run rimraf dist
$ /var/lemmy/lemmy-ui/node_modules/.bin/rimraf dist
$ webpack --mode=development --watch
[RunNodeWebpackPlugin] Starting node script: js/server.js
Inferno is in development mode.
httpbase: http://0.0.0.0:8536
wsUri: ws://0.0.0.0:8536/api/v3/ws
isHttps: false
No JWT cookie found.
http://0.0.0.0:1234
assets by status 4.37 MiB [cached] 36 assets
Entrypoint main [big] 1.68 MiB = styles/styles.css 19.4 KiB js/server.js 1.66 MiB
cached modules 1.19 MiB (javascript) 17.6 KiB (css/mini-extract) 937 bytes (runtime) [cached] 149 modules
webpack 5.72.0 compiled successfully in 405 ms
(...)
Entrypoint main [big] 4.06 MiB = styles/styles.css 19.4 KiB js/client.js 4.04 MiB
cached modules 3.35 MiB (javascript) 17.6 KiB (css/mini-extract) 1.25 KiB (runtime) [cached] 735 modules
webpack 5.72.0 compiled successfully in 398 ms
Optionally, you may pass environment variables to customize the server:
$ env LEMMY_UI_HOST=0.0.0.0:1234 \
LEMMY_INTERNAL_HOST=127.0.0.1:8536 \
LEMMY_EXTERNAL_HOST=<your-fqdn>:8536 \
LEMMY_WS_HOST=<your-fqdn>:443 \
LEMMY_UI_DEBUG=false \
node dist/js/server.js
Conclusion
Well done :) Go on to the next step.