Skip to content

Instantly share code, notes, and snippets.

@SuperSonicHub1
Last active April 7, 2024 04:00
Show Gist options
  • Save SuperSonicHub1/a5281b63ef0d79cc2fd3bfa5cb41dca1 to your computer and use it in GitHub Desktop.
Save SuperSonicHub1/a5281b63ef0d79cc2fd3bfa5cb41dca1 to your computer and use it in GitHub Desktop.
Run Bibliogram on your Android Phone with Linux

Run Bibliogram on your Android Phone with Linux

Bibliogram running on my Pixel 3a in DuckDuckGo If I find a way to replicate this on iOS with iSH, I'll make sure to update this gist. Thanks to Filip Hejsek for help with compiling libvips.

  1. Install Termux.
  2. Once in the app, run:
pkg install make clang python \ # Satisfy node-gyp: https://github.com/nodejs/node-gyp#on-unix
fish wget netcat \ # Satisfy Bibliogram's updater
libexpat graphicsmagick \ # Satisfy libvips/Sharp
git nodejs-lts # Everything else
  1. Then, to satisy better-sqlite3, run:
npm install -g node-gyp
  1. Compile and install libvips (this will take a while, so let this run in the background while you do other things):
wget https://github.com/libvips/libvips/releases/download/v8.10.5/vips-8.10.5.tar.gz
tar -xf vips-8.10.5.tar.gz
cd vips-8.10.5/
./configure --prefix=$PREFIX
make
make install
cd
  1. Clone bibliogram-updater and cd:
git clone https://git.sr.ht/~cadence/bibliogram-updater && cd bibliogram-updater
  1. Go through the motions of run.fish.
  2. Go to http://127.0.0.1:[CHOSEN_PORT] on the browser of your choice.
  3. Profit!
#!/usr/bin/env fish
cd (dirname (status filename))
source utils/environment.fish; or exit
source utils/constants.fish; or exit
source utils/interactive.fish; or exit
source utils/helpers.fish; or exit
mkdir -p state
echo '
====================================
Welcome to the Bibliogram installer.
Please pay attention as you will be
asked to make choices.
====================================
'
require_command_deps wget git nc
if not command -sq node
echo 'node not found in path.'
echo 'Download the node executable now? It will not be installed system-wide.'
echo "The Linux $arch version will be downloaded."
continue_or_quit
wget $node_download_url -O $node_tarball --progress=bar:noscroll -nv --show-progress; or exit
echo -n 'Extracting... '
tar -xaf $node_tarball; or exit
echo 'done.'
rm $node_tarball; or exit
touch state/use_local_node
echo
end
if test -e state/use_local_node
set -a PATH $PWD/$node_folder/bin
end
if not test -e bibliogram
git clone https://git.sr.ht/~cadence/bibliogram; or exit
mkdir -p bibliogram/db
else
echo "Bibliogram is already cloned. We'll use the existing folder."
end
echo
echo 'Create a new configuration file?'
echo 'If you have not created one yet, you MUST do this step now.'
echo 'If you have already created one, continuing will overwrite it.'
if y_or_n
echo
echo 'What URL will people visit to access your instance?'
echo ' example for public internet: https://bibliogram.art'
echo ' example for same machine only: http://127.0.0.1:10407'
set ip (ifconfig 2>/dev/null | string replace -r -f '\s+inet ([0-9.]+) .*' '$1' | string match -v '127.0.0.1')
string sub ' example for your LAN: http://'$ip':10407'
set s_website_origin (get_input_matching 'https?://.+')
echo
echo "What port should Bibliogram's webserver listen on?"
echo 'The standard choice is 10407.'
set s_port (get_input_matching '\d+')
echo
echo 'Would you like to enable RSS/Atom feeds?'
echo 'This will likely end up becoming a large part of your request volume,'
echo 'which might the site unusable for visitors who just want to browse.'
echo 'It will be inconvenient for users if you turn this off in the future.'
echo 'Enable feeds?'
if y_or_n
set s_feeds_enabled true
else
set s_feeds_enabled false
end
echo
set s_tor_enabled true
echo 'Use Tor for outgoing requests?'
echo 'If this installation is for a home network, choose no.'
echo 'If this installation is in the cloud, choose yes.'
if not y_or_n
set s_tor_enabled false
end
echo
echo "Does your server comply with EFF's Do Not Track policy?"
echo 'Readable version of the policy: https://www.eff.org/pages/understanding-effs-do-not-track-policy-universal-opt-out-tracking'
echo 'Full policy: https://www.eff.org/dnt-policy'
echo 'Implementation guide: https://github.com/EFForg/dnt-guide'
echo
echo 'Saying yes will serve .well-known/dnt-policy.txt,'
echo 'which makes some browser extensions unblock your site.'
echo 'Enter "yes" if you do comply with the policy, or write anything else if not.'
read -l dnt_response -P '[do you comply with this policy?] '
set dnt_response (echo $dnt_response | tr '[:upper:]' '[:lower:]')
if test "$dnt_response" = "yes"
echo 'Thank you!'
set s_does_not_track true
else
echo 'Noted.'
set s_does_not_track false
end
echo
write_config 'data/config.template' \
s_website_origin,\" s_port s_does_not_track s_feeds_enabled s_tor_enabled \
> bibliogram/config.js; or exit # the " is to surround the value to create a string
echo 'Config file written.'
end
echo
pushd bibliogram
$s_tor_enabled; or set -a npm_install_args --no-optional
npm install $npm_install_args; or exit
echo
popd
touch state/is_installed
echo ' -> If you need help making Bibliogram accessible on the public internet, see:'
echo ' https://git.sr.ht/~cadence/bibliogram-docs/tree/master/docs/Installing%20(extended).md#making-bibliogram-accessible-from-outside'
echo ' -> Please consider adding yourself to the instance list:'
echo ' https://git.sr.ht/~cadence/bibliogram-docs/tree/master/docs/Instances.md'
echo " -> If you'd like to see the other configuration options, check out:"
echo ' https://git.sr.ht/~cadence/bibliogram-docs/tree/master/docs/Configuring.md'
echo ' -> Please take the time to write a privacy policy:'
echo ' https://git.sr.ht/~cadence/bibliogram/tree/master/src/site/pug/privacy.pug.template'
echo
echo 'Start Bibliogram now?'
if y_or_n
exec ./run.fish
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment