Задача
Получить доступ к Raspbery Pi с любой точки мира через SSH. По этому же принципу кроме SSH можно достучаться до FTP, веб приложениям и сайтам, а также любым другим сервисам
Получить доступ к Raspbery Pi с любой точки мира через SSH. По этому же принципу кроме SSH можно достучаться до FTP, веб приложениям и сайтам, а также любым другим сервисам
Когда-то я рассказывал о своем способе создания сложного и запоминающегося пароля, но он все равно недостаточно надежен для использования повсеместно. В идеале пароль от каждого сайта должен отличаться и совсем не обязательно его помнить, чтобы быстро и удобно авторизироваться.
Эта инструкция написана для Mac'овского iTerm, но при помощи несложных манипуляций может применяться и в других термианалах в т.ч. на удаленных Linux машинах
Майнинг монеро основан на алгоритме CryptoNight, который устойчив к майнингу ASIC'ами. Особенностью алгоритма является возможность майнинга, как на CPU так и на GPU. У меня завалялось несколько серверов, поэтому я рассматриваю майнинг на CPU
Нам нужен кошелек, на который будут осуществляться выплаты. Рекомендуется скачать официальный кошелек и синхронизироваться с блокчейном монеро, но для начала подойдет и онлайн кошелек. Я использую mymonero.com
Будем считать это нашим работодателем. Ваши сервера выполняют работу, отправляют результат в пул, а пул начисляет вам за это награду, вычитывая свою комиссию.
В основном пулы отличаются стабильностью (их часто DDoS'ят, а некоторые просто закрываются, унося с собой деньги пользователей), комиссией, а также минимальной суммой для выплаты.
Можете поискать себе пул здесь:
Я выбрал minexmr.com. У него большой аптайм, выплаты от 0.5 XMR и средняя комиссия - 1%
Не забудьте заменить YOUR_ADDRESS_HERE в последней команде
$ apt-get -y install git automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev make g++
$ git clone https://github.com/tpruvot/cpuminer-multi && cd cpuminer-multi/ && ./build.sh
$ ./cpuminer -a cryptonight -o stratum+tcp://pool.minexmr.com:4444 -u YOUR_ADDRESS_HERE
Самый простой способ - через screen. Это консольный менеджер окон. Позволяет создавать виртуальные терминалы, выполнять в нех действия, переключаться между ними, отключаться и тд.
Установка
apt install screen
Создаем фоновую "сессию"
screen -SU monero
Запускаем майнер, как написано выше.
Можем отключиться от скрина сочетанием клавиш Ctrl + A + D. Чтобы подключиться заново, введите screen -xU monero
Если вы все сделали правильно, то на сайте пула, который вы выбрали, спустя пару минут должна появиться информация о ваших воркерах (запущенных майнерах). У меня это страница http://minexmr.com/#worker_stats
Примерный вид выхлопа в терминале:
Если остались вопросы, обращайтесь по моим контактам отсюда
Без какой либо на то причины захотелось узнать время отправки сообщения в телеграме с точностью до секунд. Я даже не представляю кому это может быть нужно. Если такие есть - напишите в комментариях - зачем?
forward_date
Нашел на компе старую БД от KeePass, от которой уже сто лет как забыл пароль. Немного гугла + вычислительных мощностей и наслаждение ностальгией не оставило себя ждать
Docker — платформа для запуска приложений в изолированных контейнерах.
Простой пример. Будь докер в жизни, вы бы смогли поставить посреди комнаты пакет, а лучше сразу несколько, где в первом у вас будет взрывчатка, а во втором то, что вы хотите подорвать и вот сами вы выступаете в роли спички, фитиля и волшебника, который делает так, чтобы содержимое второго пакета взорвалось, не унеся с собой квартиру и жизнь волшебника за компанию.
Только пакетов не обязательно 2 и в них не обязательно что-то опасное, да и комната (сервер) тоже может быть не одна. Реальные примеры с применением будут описаны ниже.
Нет ничего сложного в использовании докера. Для большинства задач нужны совсем поверхностные знания, которые можно получить, почитав всего пару статей или, еще лучше, раздел Get started официальной документации, затем подкрепить все эти знания практикой. Например, запустить MySQL сервер + Adminer в один клик на этой странице. Там есть кнопочка. Но это только для начала.
Для вас это может быть очевидным, но для меня, как человека, который для всех задач искал панель управления было тяжело осознать одну простую вещь:
С Docker придется понять, что теперь не панель управления, а вы должны будете придумать, где разместить ваши данные из контейнера, будь то сайт или что-то еще
Тоесть, теперь не будет никаких кнопочек а-ля "Файловый менеджер", которые сразу откроют вам папочку с данными ваших контейнеров. Вы должны сами придумать, где будете работать. У меня это ~/dockerfiles/somefolder
.
И маленькое замечание насчет безопасности - вам придется выполнять все команды или от рута или от sudo или добавить вашего пользователя в группу docker (лучше последнее)
А еще насчет портов. Есть Docker port, а есть Published port. Docker port это порт, который контейнер будет считать, что использует, а Published это порт, через который будет доступен Docker port на родительской машине. Простыми словами, это проброс портов
Это как виртуальная машина. Его можно удалить, остановить, возобновить, подключиться к терминалу. В общем, делать все, что и с обычным linux сервером или виртуальной машиной
Это набор инструкций, как нужно создавать контейнер. Пример такого файла можно увидеть здесь. Описание основных инструкций вот здесь
В докере один Dockerfile это один сервис. Если вам нужен один сервис, например, торрентокачалка или генерация LetsEncrypt сертификата, вы можете запустить его через docker run
. Но если у вас приложение, состоящее из нескольких сервисов (PHP + Nginx + MySQL), то запускать их все по очереди длинными командами с кучей параметров было бы, как минимум, неудобно. Этот файл объединяет все в одном месте и управляется через команду docker compose
Я выделил популярные команды. Они частично будут описаны ниже
Есть репозитории, а есть Automated builds. По-простому, репозитории это готовые сборки систем. Например, чистый Ubuntu. Некоторые репозитории это сразу система с установленным приложением, например, CMS Ghost. На Docker HUB репозиторий это куча файлов, а Automated build это всего лишь Dockerfile
На первый взгляд ничем не отличаются от репозиториев. Мне даже трудно объяснить разницу. По-обезьяньи я понимаю это так: "у репозиториев я не могу посмотреть Dockerfile, а у autobuilds могу". Automated builds это те же репозитории, только с них вы можете без проблем забрать Dockerfile и поправить его под свои нужды.
Также со временем Automated build может перестать работать, если какая-то инструкция в нем устареет (например, Dockerfile писался под Ubuntu 14.04 (FROM ubuntu:latest
), а со временем ubuntu:latest обновилась до 18.04 и вжух, проблемы). Репозитории в этом плане монолитные. Какими залиты, такими и будут даже через 100 лет.
Еще есть всякие инструкции для Dockerfile, вроде ADD
и COPY
, которые добавляют файлы в контейнер во время его создания и которые не работают для репов
Пример Automated Build: cpuminer-multi
Вы можете даже ни разу не столкнуться с этим на практике, но на будущее - это что-то вроде кластера. Короче, связка серверов с установленным Docker.
В нем есть главная нода и подчиненные. Главная это та, на которой выполнен docker swarm init
, а подчиненные те, которые присоединились через docker swarm join
и готовы принимать указания от главной (docker stack deploy
)
docker swarm init
на главной ноде и docker swarm join
на всех подчиненных, затем с главной передаете всем остальным задачу деплоя ваших приложений/сервисов при помощи пары команд.Apache + PHP + PHPMyAdmin + MySQL
и еще пары ништяков, которые помогают PHP разработчкам писать и тестить сайты, сидя на винде без всяких виртуалок. Так вот WAMP полезен только на винде и только для PHP. А Docker полезен хоть на Windows, хоть на Linux, хоть на Mac OS и для чего угодно, а не только PHP разработчиковКстати, этот блог запущен внутри Docker контейнера, а рядом с ним крутится еще контейнер с Nginx, контейнер с MariaDB, при необходимости, запускаю еще контейнер с Adminer (Аналог phpmyadmin) и LetsEncrypt генерилкой. Благодаря этому я могу купить еще хоть 100 VDS с Docker, одной командой подключить их к одному swarm'у (кластеру) и запустить сразу на всех мой блог так же в одну команду. Тогда даже если 99 нод "умрут", блог все равно будет доступен на последней.
docker run -d mysql
docker run --name database mysql
docker run -rm ubuntu pwd
docker run -p 8080:80 -d nginx
docker stop NAME
docker rm NAME
(-f удаляет даже если контейнер запущен)docker exec -it NAME bash
docker logs -f NAME
docker build --tag image-name .
docker images -a
docker image rm NAME
(-f force)docker image tag SOURCE[:TAG] TARGET[:TAG]
docker compose up -d APP_NAME
docker compose stop
docker compose start
docker compose down
docker compose logs -f
docker ps -a
(Без -a только работающие)docker inspect NAME
docker rm $(docker ps -a -q)
docker volume rm $(docker volume ls -f dangling=true -q)
docker network prune
docker system prune -a
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc:ro spotify/docker-gc
Небольшой лайфхак, как разобраться в Docker со скоростью света - изучайте чужие Dockerfile и docker-compose.yml и не ленитесь читать официальные документации, там все написано максимально кратко. Нельзя выучить докер за 5 минут, но сколько бы времени вы не потратили на его изучение, это того стоит.
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v $PWD/portainer:/data portainer/portainer
тут русский обзорЯ устал постоянно проверять, что у меня в буфере обмена перед тем, как скопировать в него новую информацию. Перепробовав 3 менеджера и изучив еще больше, остановился на простом и мощном Ditto.
Он не самый популярный, но это не мешает ему быть самым лучшим.
Официальный сайт: https://ditto-cp.sourceforge.io
У меня все. А вам нужна стена текста?
Для одной задачи мне потребовалось подключиться к Redis внутри контейнера с хоста напрямую через redis.sock
В redis репозитории docker'a такой информации нет, а на сайтах устаревшие или нерабочие способы.
wget http://download.redis.io/redis-stable/redis.conf
Ищем, раскомментируем и заменяем unixsocket
и unixsocketperm
на
unixsocket /data/redis.sock unixsocketperm 777
docker run -d -v $PWD:/data redis redis-server /data/redis.conf
redis.sock появится после запуска контейнера
/data
внутри контейнера/data
в контейнере. Там оказался redis.conf
redis-server
указав ему свой кастомный конфиг, который мы пробросили в контейнерМне повезло стать ~212 тысячным клиентом этого банка и пользуюсь их карточкой уже примерно 4-5 месяцев. Считаю, что этот банк со временем вытеснит или, по крайней мере, потеснит нынче самый популярный PrivatBank.
Этот пост ни капли не проплачен, но я не могу найти ни единого минуса, разве что высасывать из пальцев. Этот банк дает мне абсолютно, целиком и полностью все, что мне нужно от банка и пока что я не сталкивался ни с одной проблемой, к которой он был бы причастен. Возможно, еще просто время не настало)