Criando sistema de média em uma instancia no Oracle Cloud – (Configurando Rclone + Cloud)

Primeiramente nós iremos explicar o que seria esta instancia no nosso Oracle Cloud. Uma instancia e apenas o nome dado pelo Oracle para uma máquina virtual. Do mesmo jeito que você potencialmente poderia utilizar o VitualBox para criar uma máquina virtual no seu computador para poder rodar diferentes aplicativos, o Oracle faz este mesmo processo.

Utilizando a versão “Always free” você pode criar uma máquina virtual que possibilita utilizar 4 Vcores e 24 GB de ram. Com esta máquina virtual, você poderia rodar vários aplicativos.

No nosso caso iremos rodar a maioria dos nossos aplicativos utilizando o Docker. Isso se dá pela flexibilidade das instalações. Você pode testar, modificar, desinstalar e tudo irá funcionar de modo eficiente.

Um dos limitantes do nosso Oracle cloud e a quantidade de armamento que nós temos. Nós podemos utilizar até 200 GB de nossa capacidade na qual poderá ser divindade em todas as máquinas virtual que você quiser criar. Porem isso significa que se nos criara apenas uma máquina virtual, nós poderemos utilizar no máximo 200 GB o que não é suficiente para criar uma vasta biblioteca.

Se nos considerar a média de um filme 1080p, você vai encontrar filmes de 3 GB. Porem se você quiser uma qualidade melhor, tal como um filme em 4K daí você vai acabar utilizando por volta de 33 GB. O tamanho de um filme irá depender da duração deste filme, e do “Bitrate” do filme.

Isso significa que você vai poder ter uma média de 60 filmes em 1080p e no máximo 6 filmes em 4K. Porem acredito que ninguém quer manter uma biblioteca tão limitado.

Então vem a necessidade de encontrar outros métodos para entender nossa capacidade. Uma dessas opção seriam utilizar o sistema de cloud. Ainda vem a necessidade de utilizar o Rclone para fazer uma conexão entre nosso cloud.

No nosso caso iremos utilizar o google drive para fazer essa conexão. Porem o rclone oferece uma vasta liste de provedores que ele pode suportar. Veja parede desta lista na foto abaixo.

Porem vale a pena visitar o site: https://rclone.org/ para ter acesso a lista completa.

Agora sim iremos começar a nossa instalação. Primeiramente devemos criar nossa instancia. Para isso devemos criar nossa máquina virtual, então iremos selecionar “ Create a VM Instance”.

Para criar sua máquina virtual, a imagem que iremos utilizar e a imagem Canonical Ubuntu 20.04. e a configuração de nossa máquina vai ser Ampere com1 core OCPU, 6 GB memory, 1 Gbps network.

Após isso iremos fazer o download de nossa chave privada. Lembrando sem essa chave, você não terá acesso a sua máquina virtual então não esqueça de fazer esse download:

Agora sim vem a hora de criar nossa máquina virtual, para isso, basta você clicar em “create”:

Agora sim pode acessar nossa máquina virtual. Para acessar esta máquina virtual, será necessário utilizar o seu “Public IP Address” na máquina que você recém criou. e o usuário desta vez vai ser “ubuntu”.

Uma vez conectado em sua máquina virtual, será necessário fazer a atualização do sistema, então devemos utilizar o seguinte comando:

sudo apt-get update && sudo apt-get upgrade

Tendo terminado de fazer nossa atualização, você devera ver uma página parecida com essa:

Antes de instalar o Rclone, nós devemos confirmar que temos instalado o Curl, para isso, devemos utilizar o comando:

sudo apt install curl

Então agora sim podemos instalar o rclone, para isso, devemos utilizar o comando:

Para configurar o rclone iremos usar as seguintes devemos colocar o comando:

rclone config

E agora e só seguir as etapas explicados no site do Rclone https://rclone.org/drive/

No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Google Drive
   \ "drive"
[snip]
Storage> drive
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1
ID of the root folder - leave blank normally.  Fill in to access "Computers" folders. (see docs).
root_folder_id> 
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> n
--------------------
[remote]
client_id = 
client_secret = 
scope = drive
root_folder_id = 
service_account_file =
token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Porém não terminamos de fazer nossa configuração, por questões de segurança, iremos configurar a encriptação dos nossos dados no nosso cloud, para isso iremos seguir as etapas de configuração de um novo remoto do site: https://rclone.org/crypt/

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> secret
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
[snip]
XX / Encrypt/Decrypt a remote
   \ "crypt"
[snip]
Storage> crypt
** See help for crypt backend at: https://rclone.org/crypt/ **

Remote to encrypt/decrypt.
Normally should contain a ':' and a path, eg "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
Enter a string value. Press Enter for the default ("").
remote> remote:path
How to encrypt the filenames.
Enter a string value. Press Enter for the default ("standard").
Choose a number from below, or type in your own value.
   / Encrypt the filenames.
 1 | See the docs for the details.
   \ "standard"
 2 / Very simple filename obfuscation.
   \ "obfuscate"
   / Don't encrypt the file names.
 3 | Adds a ".bin" extension only.
   \ "off"
filename_encryption>
Option to either encrypt directory names or leave them intact.

NB If filename_encryption is "off" then this option will do nothing.
Enter a boolean value (true or false). Press Enter for the default ("true").
Choose a number from below, or type in your own value
 1 / Encrypt directory names.
   \ "true"
 2 / Don't encrypt directory names, leave them intact.
   \ "false"
directory_name_encryption>
Password or pass phrase for encryption.
y) Yes type in my own password
g) Generate random password
y/g> y
Enter the password:
password:
Confirm the password:
password:
Password or pass phrase for salt. Optional but recommended.
Should be different to the previous password.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)
y/g/n> g
Password strength in bits.
64 is just about memorable
128 is secure
1024 is the maximum
Bits> 128
Your password is: JAsJvRcgR-_veXNfy_sGmQ
Use this password? Please note that an obscured version of this
password (and not the password itself) will be stored under your
configuration file, so keep this generated password in a safe place.
y) Yes (default)
n) No
y/n>
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n>
Remote config
--------------------
[secret]
type = crypt
remote = remote:path
password = *** ENCRYPTED ***
password2 = *** ENCRYPTED ***
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>

Tendo esses dois remontes criados, nos podemos verificar se tudo está rodando com sucesso, para isso, iremos utilizar o comando:

rclone ls remote:

Tendo essa conexão funcionando com sucesso, agora vem a etapa de fazer nosso “mount” porem nós queremos que esse “mount” esteja sempre presente todas as vezes que nos reiniciar nossa máquina. Para isso nós iremos criar uma configuração “Fuse”

Para isso nós devemos instalar o programa “Fuse” e iremos utilizar o seguinte comando:

sudo apt install fuse -y

Tendo instalado esse programa, nós devemos criar nossa pasta onde vai ser feito o “mount” e a nossa pasta de Cache. Essa pasta de cache vai ser interessante para garantir um buffer na hora de rodar nossos aplicativos de média. Então você vai ter que usar os dois comandos abaixo:

sudo mkdir /mnt/cloud

sudo mkdir /mnt/rclone/cache/gmedia -p

Tendo essas etapas concluídos nós podemos começar a criar nosso serviço, porem antes devemos entrar como root utilizando o seguinte comando:

sudo su

Agora sim você pode utilizar o comando abaixo para criar nosso serviço.

nano gdrive.service

Nesse serviço iremos utilizar o seguinte script:

[Unit]

Description= RClone Mount Service

After=network-online.target

 

[Service]

Type=notify

ExecStart=/usr/bin/rclone mount \

  –config=/home/ubuntu/.config/rclone/rclone.conf \

  –user-agent=sauberlab \

  –allow-other \

  –timeout=1h \

  –poll-interval=15s \

  –dir-cache-time=1000h \

  –cache-dir=/mnt/rclone/cache/gmedia \

  –vfs-cache-mode=full \

  –vfs-cache-max-size=20G \

  –vfs-cache-max-age=12h \

  crypt-gdrive: /mnt/cloud

ExecStop=/bin/fusermount -uz /mnt/cloud

Restart=on-abort

RestartSec=5

StartLimitInterval=60s

StartLimitBurst=3

 

[Install]

WantedBy=multi-user.target

Após ter modificado o serviço de acordo com sua necessidade, vem a hora de mover o serviço para o local correto, com isso utilize o comando:

sudo cp gdrive.service /etc/systemd/system

Tendo o serviço no colar correto, nós iremos ativar esse serviço de modo que toda vez que reiniciar nosso computador esse serviço será indicado.

sudo systemctl enable gdrive.service

Você tem duas opções, você pode reiniciar sua máquina virtual, ou você poderá utilizar o comando abaixo que me parece a melhor opção:

sudo systemctl start gdrive.service

Independentemente de sua opção, agora vem a hora de verificar se tudo está funcionando de modo esperado, para isso, iremos rodar o comando:

sudo systemctl status gdrive.service

Se aparecer a mensagem igual à da foto abaixo, isso significa que você fez tudo certo, e esta etapa está completa. Com isso você está pronto para começar a instalar os outros aplicativos de média.

4 thoughts on “Criando sistema de média em uma instancia no Oracle Cloud – (Configurando Rclone + Cloud)”

  1. Pingback: Criando sistema de média em uma instancia no Oracle Cloud – (Configurando Rclone + Cloud) - Sauber-lab

  2. Pingback: Criando sistema de média em uma instancia no Oracle Cloud – (Instalando Jellyfin) - Sauber-lab

  3. Olá Sauber!
    Obrigado pelo conteúdo. Estou acompanhando, tentando montar uma unidade com o OneDrive no lugar do Google Drive, e ao gerar o crypt ele não me retorna erros, mas não retorna nenhum arquivo. Contudo, se faço `rclone ls onedrive:Media`, que é a pasta de mída, retorna para mim todos os arquivos que nela constam.

  4. Olá Sauber!
    Obrigado pelo conteúdo. Estou acompanhando, tentando montar uma unidade com o OneDrive no lugar do Google Drive, e ao gerar o crypt ele não me retorna erros, mas não retorna nenhum arquivo. Contudo, se faço `rclone ls onedrive:Media`, que é a pasta de mída, retorna para mim todos os arquivos que nela constam.

    ubuntu@oci:$ rclone ls crypt-onedrive: -vv
    2023/11/03 20:21:29 DEBUG : rclone: Version “v1.64.2” starting with parameters [“rclone” “ls” “crypt-onedrive:” “-vv”]
    2023/11/03 20:21:29 DEBUG : Creating backend with remote “crypt-onedrive:”
    2023/11/03 20:21:29 DEBUG : Using config file from “/home/ubuntu/.config/rclone/rclone.conf”
    2023/11/03 20:21:29 DEBUG : Creating backend with remote “onedrive:Media”
    2023/11/03 20:21:30 DEBUG : Music: Skipping undecryptable dir name: not a multiple of blocksize
    2023/11/03 20:21:30 DEBUG : Video: Skipping undecryptable dir name: not a multiple of blocksize
    2023/11/03 20:21:30 DEBUG : 7 go routines active

Leave a Comment

Your email address will not be published. Required fields are marked *