# Setup Development Server for Jupyter
**Basic Tools**
- Install conda
# Move to /opt directory and switch to su (adminisrative) user
$ cd /opt
$ sudo su
# Download and install anaconda
$ wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
$ bash Anaconda3-2022.05-Linux-x86_64.sh -b -p /opt/anaconda3
# During installation choose /opt/anaconda3 as the install directory
\* You will need to type `exit` to logoff administrative user and disconnect/reconnect from the machine. When you reconnect your prompt should look like
**Link conda tools to path-searchable folders**
# make sure all conda packages will be in path by symbolic links to /bin
# this step is a bit of a hack and you may get some warnings about
# symbolic links that cannot be created - it's ok.
$ ln -s /opt/anaconda3/bin/* /bin
$ ln -s /opt/anaconda3/pkgs/*/lib/* /usr/lib
**Configure Bioconda**
This will help make installations smoother and the `-c bioconda` and smiliar commands won't be needed.
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --set channel_priority strict
**Confgure and Run Jupyter**
Setup a password for the server
jupyter notebook password
Intsall the bash kernel
pip install bash_kernel
python3 -m bash_kernel.install
Start at tmux session so that this program can run in the background
tmux new-session -n jupyter
Run the command to start the Jupyter server
jupyter-lab --no-browser --allow-root --ip=0.0.0.0 --port=8001 --notebook-dir='/home/nano_user'
To leave the tmux screen hit `CNTRL`+`b` and then `d` this key combination is the "detatch" command. See [tmux docs]().
**Install Jupyter Book**
**Install iCommands**
Ubuntu 20.04
```
wget -qO - https://packages.irods.org/irods-signing-key.asc \
| sudo apt-key add -
echo "deb [arch=amd64] https://packages.irods.org/apt/ focal main" \
| sudo tee /etc/apt/sources.list.d/renci-irods.list
sudo apt update
sudo apt install irods-icommands
```
## Configuring an instance to automaticaly run jupyterlab
### Script to start jupyter (exe)
```
# Created a script that starts a Jupyter hub
# This relies on jupyter-notebook password having been run
# with a configuration json/hashed password in .jupyter/ in
# the lab start folder
```
/home/exouser/jstart.sh
```bash
#!/bin/bash
# Start a jupyter session
jupyter-lab --no-browser --allow-root --ip=0.0.0.0 --port=8001 --notebook-dir='>
```
### Script to start tmux (exe)
```
# Created a script that runs the above jupyter script
# in a detached tmux session
```
/home/exouser/tstart.sh
```bash
#!/bin/bash
# Create a new session named "jupytertmux" and run a command inside the session
tmux new-session -d -s jupytertmux
tmux send-keys -t jupytertmux "bash /home/exouser/jstart.sh" Enter
```
Both scripts in `/home/exouser/` are made executable
```
chmod +x /home/exouser/tstart.sh
chmod +x /home/exouser/jstart.sh
```
### Entry to start at boot time (exe)
Edit the cronfile so that `tstart.sh` runs at boot
Open the crontab file
`crontab -e`
Add the line to the script
`@reboot bash /home/exouser/tstart.sh`
# Configuring Manilla Shares
*Create a share*
- Following documentation here: https://docs.jetstream-cloud.org/ui/horizon/manila/
- Edit the share rule
- Use Allocation name - i.e. 'BIO220126-nanopore-share'
- This will create an access key
For this test in Dec 2022
- Key: AQDJOoljmdHMGRAAn/nIAC4aDVKoqINKcd37vQ==
- Path: 149.165.158.38:6789,149.165.158.22:6789,149.165.158.54:6789,149.165.158.70:6789,149.165.158.86:6789:/volumes/_nogroup/e3390b33-2305-4713-b32e-46395eac9015/15d85743-1626-40e5-ade4-27fce24bfbf6
*Configure the VM to use the share*
https://docs.jetstream-cloud.org/general/manilaVM/
```
sudo su
mkdir /mnt/ceph
# Create a file and add the secret
nano /etc/ceph.BIO220126-nanopore-share.secret
# add the secret in the above file
# Change permissions
chmod 600 /etc/ceph.BIO220126-nanopore-share.secret
# Edit /etc/fstab to include the following
nano /etc/fstab
149.165.158.38:6789,149.165.158.22:6789,149.165.158.54:6789,149.165.158.70:6789,149.165.158.86:6789:/volumes/_nogroup/e3390b33-2305-4713-b32e-46395eac9015/15d85743-1626-40e5-ade4-27fce24bfbf6 /mnt/ceph ceph name=BIO220126-nanopore-share,secretfile=/etc/ceph.BIO220126-nanopore-share.secret,x-systemd.device-timeout=30,x-systemd.mount-timeout=30,noatime,_netdev,rw 0 2
#Mount the share
mount -a
# confirm share is mounted
df -h|grep vol
```
I also created a script if neded
```
#!/bin/bash
# This script will setup a VM to connect to a pre-configured share on JetStream2
# The script easily breaks if any of the values have changed so be careful
sharepath='149.165.158.38:6789,149.165.158.22:6789,149.165.158.54:6789,149.165.158.70:6789,149.165.158.86:6789:/volumes/_nogroup/e3390b33-2305-4713-b32e-46395eac9015/15d85743-1626-40e5-ade4-27fce24bfbf6'
sharekey='BIO220126-nanopore-share'
fstabline="$sharepath /mnt/ceph ceph name=${sharekey},secretfile=/etc/ceph.${sharekey}.secret,x-systemd.device-timeout=30,x-systemd.mount-timeout=30,noatime,_netdev,rw 0 2"
mkdir -p /mnt/ceph
touch /etc/ceph.${sharekey}.secret
sudo chmod 600 /etc/ceph.${sharekey}.secret
if grep "secretfile" /etc/fstab
then
echo "Do nothing"
else
echo $fstabline >> /etc/fstab
fi
```
**Setup files on the share**
Create directories for everyone. Technically, everyone is exouser so the names are really just a way of organizing. Trying to make the `chamecrista_fast5`, `notebooks`, and `tutorial_example` folder read only so that we reduce the chance of accidential writing over.
```
sudo mkdir notebooks jagosto jlopez jwilliams afeitzinger candujar tutorial_example
sudo chmod 766 -R jagosto jlopez jwilliams afeitzinger candujar
sudo chmod 644 -R chamecrista_fast5 notebooks tutorial_example
```
# Setup a new running instance from the Jupyter base instance
1. Access your server in a web browser: IP address:8001
2. Login with the password
3. Press the **Terminal** button to open a terminal
4. Paste in the following command to download the Setup notebook
`wget https://github.com/JasonJWilliamsNY/genome_camp_2021/raw/main/genome_camp_2022/notebooks/setup_notebook.ipynb`
You should get an output similar to this:
```
--2022-12-05 05:27:27-- https://github.com/JasonJWilliamsNY/genome_camp_2021 /raw/main/genome_camp_2022/notebooks/setup_notebook.ipynb
Resolving github.com (github.com)... 140.82.114.4
Connecting to github.com (github.com)|140.82.114.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/JasonJWilliamsNY/genome_camp_2021 /main/genome_camp_2022/notebooks/Setup_notebook.ipynb [following]
--2022-12-05 05:27:27-- https://raw.githubusercontent.com/JasonJWilliamsNY /genome_camp_2021/main/genome_camp_2022/notebooks/setup_notebook.ipynb
Resolving raw.githubusercontent.com (raw.githubusercontent.com)...
185.199.111.133, 185.199.110.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com
(raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13598 (13K) [text/plain]
Saving to: ‘Setup_notebook.ipynb’
setup_notebook.ipynb
100%[===============================================================>] 13.28K
--.-KB/s in 0s
2022-12-05 05:27:27 (60.4 MB/s) - ‘Setup_notebook.ipynb’ saved [13598/13598]
```
6. Look in the file navigation pane in your Jupyter lab window, you should see the Setup_notebook.ipynb. Double click to open this notebook and follow instructions to setup your computer's connection to the data share.