Execute seu próprio Pastebin com Stikked

Execute seu próprio Pastebin com Stikked

Se você é um desenvolvedor de qualquer tipo, provavelmente já ouviu falar do Pastebin.com, o aplicativo da Web mais usado para colar e compartilhar trechos de texto. Pastebin.com é ótimo, mas não é a única ferramenta pastebin disponível.

Na verdade, está se tornando cada vez mais comum que os sites hospedem seus próprios pastebins. Isso te dá mais liberdade. Existem muitas implementações de pastebin de código aberto, e Stikked é uma das mais úteis com seus recursos avançados e interface de usuário simplificada.

Stikked é construído com PHP e jQuery e usa a estrutura CodeIgniter.

Instalando o Stikked

O Stikked requer que seu servidor esteja em execução:

  • git
  • NginxGenericName
  • Docker e Docker Compose
  • Para baixar a versão mais recente do Stikked, visite a página Stikked GitHub ou vá para a linha de comando e execute:

git clone https://github.com/claudehohl/Stikked.git

  • Vá para a pasta Stikked:

cd. /Stikked

Um terminal mostrando o processo git clone para o repositório Stikked.
  • Abra o arquivo “docker-compose.yml” usando seu editor de texto favorito.
  • Role até a variável “ports:” na categoria “services:” e altere seu valor para o seguinte:

ports:
- 8080:80/tcp

Um terminal mostrando a variável de portas para o contêiner do docker Stikked.
  • Role até a categoria “mysql:” e substitua a subcategoria “command:” pelo seguinte código:

command: mysqld

Um terminal mostrando o novo comando mysql para o contêiner docker.
  • Abra o arquivo de configuração principal do Stikked:

nano ~/Stikked/docker/stikked.php

  • Vá para a linha que contém a variável $config['base_url']e substitua “localhost” pelo nome de domínio totalmente qualificado do seu sistema. Salve e saia do arquivo.
Um terminal mostrando um exemplo de URL base para a instância.
  • Abra o arquivo “nginx.conf” dentro do container Stikked:

nano ~/Stikked/docker/nginx.conf

  • Remova as três linhas abaixo de “Apenas solicitações ao nosso host são permitidas”.
Um terminal destacando uma parte da configuração do docker Nginx a ser removida.
  • Crie seu contêiner do Docker executando o seguinte comando:

docker compose up -d

Criando um proxy reverso SSL Nginx

Neste ponto, agora você tem uma instalação do Stikked em execução na porta 8080. Embora você possa usar isso como está, o contêiner Stikked básico pode ser inseguro, pois não criptografa sua conexão por padrão. Para corrigir isso, você precisa criar um proxy reverso que possa ouvir as conexões de entrada que ele criptografa por meio de SSL.

  • Crie um novo arquivo de configuração do site em “/etc/nginx/sites-available/”

sudo nano /etc/nginx/sites-available/stikked

  • Cole o código a seguir dentro do novo arquivo do site. Este é um proxy reverso simples que escuta as conexões não criptografadas recebidas na porta 80 e redireciona todas as consultas para a porta 8080.

server {
listen 80;
listen [::]:80;

root /var/www/html;
server_name my-stikked-installation.com;


location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:8080;
}}

Um terminal mostrando um exemplo de configuração de proxy reverso do Nginx.
  • Crie um link simbólico para o arquivo do seu site dentro de “/etc/nginx/sites-enabled” e remova o arquivo do site padrão dentro dele:

sudo ln -s /etc/nginx/sites-available/stikked /etc/nginx/sites-enabled/

  • Teste a configuração do Nginx em busca de erros e habilite o serviço Nginx por meio de systemctl:

sudo nginx -tsudo systemctl reload nginx.service

Instalando um certificado SSL

Com seu proxy reverso instalado e funcionando, agora você pode solicitar um certificado SSL para sua instância do Stikked. A opção mais fácil é instalar o pacote snap certbot da Electronic Frontier Foundation.

  • Certifique-se de que seus binários de snap principais estejam atualizados e em execução:

sudo snap install core
sudo snap refresh core

  • Instale o certbot usando o binário snap da sua máquina Stikked:

sudo snap install certbot --classic

Um terminal mostrando o processo de instalação do certbot.
  • Teste se o programa está sendo executado corretamente vinculando seu endereço de e-mail ao certbot:

sudo certbot register --agree-tos -m ramces@email.invalid

  • Execute certbot novamente para criar um certificado SSL para sua instância do Stikked:

sudo certbot --nginx -d my-stikked-installation.com

  • Abra um navegador da web e verifique se sua instância do Stikked está sendo executada em SSL.
Uma captura de tela mostrando uma instância funcional do Stikked.

Estilizando sua instalação do Stikked

Todos os dados de estilo existem no diretório chamado “themes” no diretório “htdocs” do seu repositório Git. Por diversão, dê uma olhada dentro do subdiretório para ver algumas opções interessantes.

  • Entre no repositório Stikked Git e navegue até o diretório “htdocs/themes”.

cd ~/Stikked/htdocs/themes

  • A maioria das opções de estilo são feitas dentro de cada pasta de tema. Por exemplo, o tema geocities transforma seu Stikked em um site da década de 1990.
Uma captura de tela mostrando um tema retrô para Stikked.
  • Para modificar a aparência de sua instância, você precisa primeiro desligar seu contêiner Docker:

docker compose down

  • Abra o arquivo de configuração principal da sua instância usando seu editor de texto favorito:

nano ~/Stikked/docker/stikked.php

  • Role para baixo até a linha que contém a $config['theme']variável e altere seu valor para “cleanwhite”.
Um terminal mostrando a variável de tema para a instância atual.
  • Salve seu arquivo de configuração principal e recarregue seu contêiner Docker:

docker compose up -d

  • Abra um navegador da web e carregue sua nova página da web. Aqui está minha página “Criar” depois de carregar o tema cleanwhite.
Uma captura de tela mostrando Stikked rodando com um tema cleanwhite.

Características

O Stikked possui vários recursos interessantes que o destacam da multidão de outros scripts pastebin.

Em primeiro lugar, ele percorre toda a gama quando se trata de realce de sintaxe. O Stikked oferece suporte a uma enorme lista de linguagens de programação e script, de C a Bash. O que quer que você esteja codificando, sua instalação do Stikked o protege.

Uma captura de tela mostrando os recursos de realce de sintaxe do Stikked.

O idioma de cada snippet é exibido em uma tabela na página “Recente”; se o pôster não especificou um idioma para colar, ele é rotulado como “texto”. A tabela também exibe o título, o nome do pôster e a atualidade, juntamente com um ícone de RSS. O feed RSS está localizado em your-stikked-installation.com/lists/rss.

Uma captura de tela mostrando um feed RSS simples para a instância do Stikked.

A página “Tendências” é quase idêntica, mas com a adição de uma coluna “hits” e nenhum feed RSS. Os acessos parecem ser calculados com base em visitas de endereços IP exclusivos.

Uma captura de tela mostrando a lista de pastas de tendências na instância atual.

Ao criar uma pasta, você tem a opção de definir uma data de expiração, criar uma URL curta usando o serviço bit.ly e/ou tornar a postagem privada. Observe que uma pasta “privada” não é verdadeiramente privada; qualquer usuário que tiver a URL da colagem poderá vê-la, a menos que você tenha ativado a autenticação LDAP – nesse caso, todos os usuários registrados com a URL poderão vê-la. “Privado” significa apenas que a postagem não aparecerá nas páginas Recentes ou Tendências.

Uma captura de tela mostrando uma pasta privada.

Deixando de lado a segurança, o Stikked fornece alguns utilitários legais para visualizar uma pasta. Estou especialmente satisfeito com o código de incorporação.

Uma captura de tela mostrando um trecho de incorporação de exemplo para a pasta atual.

Você também pode responder a pastas e adicionar suas próprias edições em um formulário abaixo da pasta original. A única desvantagem disso é que as respostas não levam de volta à postagem original; se o seu pastebin tiver muitas postagens e respostas diferentes feitas em momentos diferentes, é fácil perder o controle de sua estrutura. Só posso esperar que o desenvolvedor em algum momento introduza respostas encadeadas.

Um último recurso é o controle de spam, ao qual Stikked se refere como “spamadmin”. Configure inserindo as credenciais em “docker/stikked.php” nas linhas 79 e 80:

$config['spamadmin_user'] = 'stikked';
$config['spamadmin_pass'] = 'stikked';

Vá para your-stikked-installation.com/spamadmin para fazer login. Lá você pode ver quais pastas vieram de quais endereços IP, remover pastas e bloquear intervalos de IP.

Uma captura de tela mostrando o painel de controle do spamadmin para Stikked.

API

A API do Stikked permite que você cole a partir de clientes pastebin. A URL da API a ser usada em seu cliente é your-stikked-installation.com/api/create.

Um exemplo básico é usar o comando cURL para carregar um arquivo chamado “smalltalk.st”, configurando o título, nome, privacidade, idioma e tempo de expiração em minutos:

curl -d title='cURL test' -d name='Ramces' -d private=1 -d lang=c -d expire=45 --data-urlencode text@count.c https://my-stikked-installation.com/api/create

Isso retornará a URL da pasta.

Uma captura de tela mostrando um exemplo de colagem feito usando a API Stikked.

Se você deseja uma maneira fácil de coletar e compartilhar trechos de texto em seu próprio site, recomendo que experimente o Stikked.

Nessa nota, uma maneira de obter rapidamente alguns trechos de texto para compartilhar é aprendendo uma nova linguagem de programação. Aprenda como escrever scripts Bash seguindo nosso guia simples para iniciantes . Você também pode expandir esse conhecimento lendo nosso mergulho profundo nas variáveis ​​Bash e seus usos .

Crédito da imagem: Christopher Gower via Unsplash . Todas as alterações e screenshots por Ramces Red.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *