Задать вопрос

Как организовать простейший хостинг картинок?

Есть программа для Windows - ImageUploader, она позволяет настроить свой сервер только в FTP/SFTP/WebDav.
Можно ли как-то сделать, чтобы при загрузке по одному из этих вариантов, ссылки открывались извне.

Ещё одна проблема - это то, что я хочу подключить облако по webdav (rclone или davfs) и примонтировать к общей папке.
Ну и соответственно чтобы в IU по FTP например прям в облако и закачивало.

ПС. Хостинг, если так можно назвать чисто для себя, чтобы постить картинки на форумах.
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
BlagoYar
@BlagoYar Автор вопроса
Короч сделал, что хотел, но с точки зрения безопасности натворил херни :)
Такое:
Создал юзера с bash, с домашним каталогом на уровень выше от папки домена.
Примонтировал rclone-ом облачный диск в подпапку домена.
Владелец на home этого юзера с дочерними ftpuser:www-data, права стандарт 755 на каталоги, 644 на файлы.
Также добавил www-data в группу ftpuser и зеркально. Плюс хотел это дело через FTP, но чёт крутил вертел, не получилось с юзером (login denied и всё). Не получается дать права на запись по ходу. Вручную могу закачать, а через IU выдаёт ошибку
[03:07:05] Сервер: 61160108-3850-4b97-8cf5-4dec12d99ebc (CScriptUploadEngine)
Скрипт: ftp.nut [TID=10868]
Модуль загрузки

ftp.nut [ThreadId=10868]
Request failed, URL: 'ftp://mysite.com/var/www/html/mysite.com/imgupl/'. 
Access denied to remote resource
Response code: 550
Server denied you to change to the given directory

Через sFTP скорость низкая (~0.8-1мб/сек), но для изображений огонь, быстро.

Не знаю после чего заработало (nginx отадавал 404 до этого; location добавлял, работает только не для смонтированного каталога), но вроде как после того, как примонтировал с опцией --allow-other в параметре rclone. Все три параметра
--dir-cache-time 10s --vfs-cache-mode full --allow-other
(средний это спец. для cloud mailru)

UPD Получилось и FTP настроить.
Нужно прокинуть правила iptables и задать явно порты пассивного режима в конфиге vsFTPd
iptables -A INPUT -p tcp -m multiport --dports 20,21 -m comment --comment "For vsFTPd control" -j 
iptables -A INPUT -p tcp -m multiport --dports 1500:1505 -m comment --comment "For vsFTPd control" -j ACCEPT
# И ещё эти (с перепугу). Лень уже проверять было.
iptables -t nat -A PREROUTING --dst [Внешний IP сервера] -p tcp --dport 21 -j DNAT --to-destination [Внутренний IP сервера, если за NAT, как у меня в случае с Oracle]
iptables -t nat -A PREROUTING --dst [Внешний IP сервера] -p tcp --dport 20 -j DNAT --to-destination [Внутренний IP сервера, если за NAT, как у меня в случае с Oracle]

Конфиг vsFTPd такой
spoiler
listen=YES

listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Welcome to FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
ls_recurse_enable=NO
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=su
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

utf8_filesystem=YES

pasv_min_port=1500
pasv_max_port=1505

ftp_username=ftpadmin
allow_writeable_chroot=YES
pasv_enable=YES
local_root=/var/www/html/mysite.com/imgupl
syslog_enable=YES
dirlist_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_file=/var/log/xferlog
log_ftp_protocol=YES
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
То, что вы ищите называется "статический хостинг". Эта фича есть в любом Http сервере. Самый простой вариант - ставите ngnix и конфиг что-то типа такого:
server {
    root /data/images;
    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы