plume-org / docs Goto Github PK
View Code? Open in Web Editor NEWThe documentation for Plume
Home Page: https://docs.joinplu.me
License: GNU General Public License v3.0
The documentation for Plume
Home Page: https://docs.joinplu.me
License: GNU General Public License v3.0
The docs should be translated too.
Installing gettext via homebrow does not add it to the path by default, so running brew install gettext
is not enough to be able to compile Plume. It actually require brew link gettext --force
(see Homebrew/legacy-homebrew#7621)
The doc says to curl https://docs.joinplu.me/docker-compose.sample.yml to get docker configuration, however as of now, it returns a webpage instead of actual yml
There is no default text color specified. To reproduce, configure your browser to use white text on black
background as fallback.
See also: Plume-org/joinplu.me#4
Document some new configuration parameters :
add Docker-hub, Liberapay, and maybe other places to this list
(it's CommonMark)
As installation methods.
Thanks to @mcrosson there are pre-built images available at https://docker.lollipopcloud.solutions/. I think most people will prefer to use them instead of building them manually, so we should probably mention that in the installation docs.
When setting up Plume, I found I couldn't access my instance when visiting the URL I had set up, this was because Plume wasn't running on the same host as the Reverse Proxy, and it had bound to localhost:7878 and not [my host's ip]:7878. I found the env("ROCKET_ADDRESS")
when looking through the source code and got it set up properly, but not everyone will be able to read Rust code.
But maybe once Plume is more stable.
cc @papey
Maybe we could host documentation for the source code, to make it easier to explore? But that would require better source code documentation first.
So that people at least know it exists
Having them on the left creates a non-existent hierarchy between pages with "subpages" and pages that don't.
In the install docs, we say to do su postgres
to create the DB but we never give the instructions to exit it, it may be confusing.
The autodetection may not always work as expected
Documentation says :
plm migration run
But this is not a valid command in 0.0.3-alpha-2 release.
See this thread for a real life exemple
cargo release
This was 8 hours of solid work in order to get every single detailed hashed out for installing from source on Ubuntu 18. I hope this helps somebody.
apachectl -V
"Apache2" needs to be version 2.4.17 or highersudo apt install gettext git curl gcc make openssl libssl-dev pkg-config
sudo apt install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs` -pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt update
sudo apt install postgresql postgresql-contrib libpq-dev
sudo su - postgres psql
\l
\q
sudo adduser plume
su - plume
cd ~
curl https://sh.rustup.rs -sSf | sh
stable installed - rustc 1.37.0 (eae3437df 2019-08-13)
and Rust is installed now. Great!
export PATH="$PATH:/home/plume/.cargo/bin:/home/plume/.local/bin:/usr/local/sbin"
nano ~/.bashrc
export PATH="$HOME/.cargo/bin:$PATH"
source $HOME/.cargo/env
cd ~
rustc --version
rustc 1.37.0 (eae3437df 2019-08-13)
cargo --version
cargo 1.37.0 (9edd08916 2019-08-02)
git clone https://github.com/Plume-org/Plume.git&&cd Plume
cargo clean && cargo build --features postgres && cargo install --debug --force --features postgres
cargo install --no-default-features --debug --force --features postgres --path plume-cli
sudo service postgresql status
sudo service postgresql start
sudo -u postgres createuser -P plume
sudo -u postgres createdb -O plume plume
cd ~/Plume
nano .env
and populate with this changing the postgres user name, password, database name and ROCKET_SECRET_KEY as needed
# Postgres SQL setup
DATABASE_URL=postgres://plume:[email protected]:5432/plume
# For PostgreSQL: migrations/postgres
MIGRATION_DIRECTORY=migrations/postgres
# The domain on which your instance will be available
BASE_URL=my.plume.url
# Secret key used for private cookies and CSRF protection `openssl rand -base64 32`
ROCKET_SECRET_KEY=
ROCKET_ADDRESS=127.0.0.1
ROCKET_PORT=7878
# Mail settings
MAIL_SERVER=my.plume.url
[email protected]
MAIL_PASSWORD=emailpassword
MAIL_HELO_NAME=my.plume.url
[email protected]
# Custom icons
#PLUME_LOGO=icons/custom/myicons/plume.png
#PLUME_LOGO_FAVICON=icons/custom/myicons/plume32.png
#PLUME_LOGO_48=icons/custom/myicons/plume48.png
#PLUME_LOGO_72=icons/custom/myicons/plume72.png
#PLUME_LOGO_96=icons/custom/myicons/plume96.png
#PLUME_LOGO_144=icons/custom/myicons/plume144.png
#PLUME_LOGO_160=icons/custom/myicons/plume160.png
#PLUME_LOGO_192=icons/custom/myicons/plume192.png
#PLUME_LOGO_256=icons/custom/myicons/plume256.png
#PLUME_LOGO_512=icons/custom/myicons/plume512.png
diesel migration run
plm instance new
plm users new --admin
plm search init
plume
plume@computer:~/Plume$ plume
Configuration read from /home/plume/Plume/.env
๐ง Configured for development.
=> address: 127.0.0.1
=> port: 9092
=> log: normal
=> workers: 8
=> secret key: provided
=> limits: forms = 128KiB, json* = 1MiB
=> keep-alive: 5s
=> tls: disabled
๐ฐ Mounting /:
...
๐ Rocket has launched from http://127.0.0.1:7878
sudo nano /etc/systemd/system/plume.service
and in that file
[Unit]
Description=plume - federated blogging application
After=network.target postgresql.service
[Service]
Type=simple
User=plume
WorkingDirectory=/home/plume/Plume
ExecStart=/home/plume/.cargo/bin/plume
TimeoutSec=30
SyslogIdentifier=plume
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable plume
sudo service plume start
For syntax highlighting. Their names and "aliases" (for instance python
instead of Python
) should be listed.
Until I figure out my password (to upload my SSH and GPG keys), I will save the guide here.
My specific setup:
C:\Extra
C:\Plume
Outline:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
C:\Extra\ssl
(or wherever you installed OpenSSL NOTE: this is not to the bin folder, it must be to root!)C:\Extra\LLVM\bin
(or wherever you installed LLVM to)Launch Git Bash by right clicking on your desktop and choosing "Git Bash Here". The rest of the commands will be run from this console unless otherwise stated.
rustc --version
%USERNAME%@computer MINGW64 ~/Downloads
$ rustc --version
rustc 1.40.0 (73528e339 2019-12-16)
cargo --version
%USERNAME%@computer MINGW64 ~/Downloads
$ cargo --version
cargo 1.40.0 (bc8e4c8be 2019-11-22)
choco --version
%USERNAME%@computer MINGW64 ~/Downloads
$ choco --version
0.10.15
openssl version
%USERNAME%@computer MINGW64 ~/Downloads
$ openssl version
OpenSSL 1.1.1d 10 Sep 2019
If you get any Not Found errors, make sure that your folder paths are correct in your environment. Once everything returns a version, you may proceed.
git clone https://github.com/Plume-org/Plume.git
cd Plume
cargo +stable install diesel_cli --no-default-features --features sqlite --version '=1.4.0' --verbose
NOTE - you may get an error similar to this:
= note: LINK : fatal error LNK1181: cannot open input file 'sqlite3.lib'
error: aborting due to previous error
error: failed to compile `diesel_cli v1.4.0`, intermediate artifacts can be found at `C:\Users\%USERNAME%\AppData\Local\Temp\cargo-installToiK1l`
Caused by:
could not compile `diesel_cli`.
If you do, go to the "Making SQLite3.lib" section, else continue.
cargo install cargo-web&&cargo web deploy -p plume-front --release
cargo install --no-default-features --features sqlite --path .
If you get an error here, go to the "Making SQLite3.lib" section step 5/6, else continue.
cargo install --no-default-features --features sqlite --path plume-cli
# Postgres SQL setup
DATABASE_URL=C:/Users/%USERNAME%/Downloads/Plume/plume.db
# For PostgreSQL: migrations/postgres
MIGRATION_DIRECTORY=migrations/sqlite
# The domain on which your instance will be available
BASE_URL=my.plume.url
# Secret key used for private cookies and CSRF protection `openssl rand -base64 32`
ROCKET_SECRET_KEY=
ROCKET_ADDRESS=127.0.0.1
ROCKET_PORT=7878
# Mail settings
MAIL_SERVER=my.plume.url
[email protected]
MAIL_PASSWORD=emailpassword
MAIL_HELO_NAME=my.plume.url
[email protected]
# Custom icons
#PLUME_LOGO=icons/custom/myicons/plume.png
#PLUME_LOGO_FAVICON=icons/custom/myicons/plume32.png
#PLUME_LOGO_48=icons/custom/myicons/plume48.png
#PLUME_LOGO_72=icons/custom/myicons/plume72.png
#PLUME_LOGO_96=icons/custom/myicons/plume96.png
#PLUME_LOGO_144=icons/custom/myicons/plume144.png
#PLUME_LOGO_160=icons/custom/myicons/plume160.png
#PLUME_LOGO_192=icons/custom/myicons/plume192.png
#PLUME_LOGO_256=icons/custom/myicons/plume256.png
#PLUME_LOGO_512=icons/custom/myicons/plume512.png
NOTE: in order to use the Windows Task Scheduler to start/stop, you need a full file path to database file with forward slashes... Backslashes will result in errors.
diesel migration run
plm search init
plm instance new
plm users new --admin -n "adminusername" -N "Human Readable Admin Name" -b "Biography of Admin here" -p hackmeplease
You should be ready to start testing!
plume
%USERNAME%@computer MINGW64 ~/Downloads/Plume (master)
$ plume
Configuration read from C:\Users\%USERNAME%\Downloads\Plume\.env
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: InvalidSecretKey', src/main.rs:146:26
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
ROCKET_SECRET_KEY=
is filled in. You may use openssl rand -base64 32
to generate a valid key.plume
%USERNAME%@computer MINGW64 ~/Downloads/Plume (master)
$ plume
Configuration read from C:\Users\%USERNAME%\Downloads\Plume\.env
Warning: the email server is not configured (or not completely).
Please refer to the documentation to see how to configure it.
Configured for production.
=> address: 127.0.0.1
=> port: 7878
=> log: critical
=> workers: 16
=> secret key: provided
=> limits: forms = 128KiB, json* = 1MiB
=> keep-alive: 5s
=> tls: disabled
Rocket has launched from http://127.0.0.1:7878
Once everything is working, you may be annoyed by having to always open a command prompt to start Plume. We can configure it to start on boot via Task Scheduler.
Figure 1 |
Figure 2 |
Figure 3 |
Note: I have yet to get this to work with a subdirectory. So, if your domain is https://mydomain.com, it can only work there and not at https://mydomain.com/plume as far as I am aware. If anyone figures this out, please let me know!
Figure 4 |
Figure 5 |
If you need to use a subdirectory, you can create a Server Farm called Plume, with a server of localhost, and a http port of 7878 and follow these steps:
^plume$|^plume/(.*)
where plume is the subdirectory you want to use.choco install sqlite
cd C:\ProgramData\chocolatey\lib\SQLite\tools
"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
lib /MACHINE:x64 /def:sqlite3.def /out:sqlite3.lib
C:\Users\%USERNAME%\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib
"C:\Users\%USERNAME%\.rustup\toolchains\nightly-2020-01-15-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib"
Don't want to compile from source? Try this.
We should have a page listing people contributing (or who contributed to the project) to make our organization clearer both for ourselves and external people.
Info that should be on this page
Following Plume-org/Plume#570 and Plume-org/Plume#571, we can now provide wasm binaries for non tier 1 platforms.
This should be documented (and those binaries distribued) so that people wanting to build Plume on "rare" platforms can do so without the headache of doing whatever was done to make arm build fine
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.