[Забавный проект Docker] Создайте кровать для фотографий со встроенной функцией преобразования изображений за 10 минут - Picsur
[Забавный проект Docker] Создайте кровать для фотографий со встроенной функцией преобразования изображений за 10 минут - Picsur

1.Предисловие

У Гу Гу есть одинБлаготворительная кровать с картинами,Временно сохраните несколько фотографий, чтобы друзья могли ими воспользоваться.,В то время мы использовалиПростая картина-кроватьЧтобы построить。

Недавний инцидент со сбоями в oneinstack и lnmp шокировал многих друзей.

сегодня,Давайте представим еще одну кровать с открытым исходным кодом, сделанную чисто иностранцами.Picsur——простой в использовании、Самостоятельный сервис обмена изображениями,Похоже на: Имгур,И встроенная функция преобразования.

2. Отображение проекта

Просто добавьте несколько фотографий.

Интерфейс также очень прост:

246769fe0e4fd6e59e4fb360a3d24d88.png
246769fe0e4fd6e59e4fb360a3d24d88.png
f80bfca4bd86c1c7da82b6e80df74bd6.png
f80bfca4bd86c1c7da82b6e80df74bd6.png

Вы можете увидеть все загруженные вами фотографии:

3db0056943f83c2eeaca5026afe0b2f2.png
3db0056943f83c2eeaca5026afe0b2f2.png

Вы можете установить срок действия изображения:

54bb5e2947e99ea4542f4ea093ca9f74.png
54bb5e2947e99ea4542f4ea093ca9f74.png

Вы можете свободно установить формат изображения:

ce1a095a0d3756197f5dbf3eaa6217ce.png
ce1a095a0d3756197f5dbf3eaa6217ce.png

2.1 Особенности

  • Поддержка развертывания Docker в один клик
  • Загрузить анонимно
  • Поддержка нескольких учетных записей
  • Соответствующие ограничения CORS
  • Удаление Exif-информации
  • Поддерживает возможность сохранять оригинальные изображения.
  • Поддержка нескольких форматов:
    • QOI
    • JPG
    • PNG
    • WEBP (поддерживает анимацию)
    • TIFF
    • BMP
    • GIF (поддерживает анимацию)
  • Поддерживает преобразование изображений
  • Поддерживает редактирование изображений
    • изменить размер
    • вращать
    • подбросить
    • удалить прозрачность
    • отрицательный эффект
    • Обработка оттенков серого
  • Удаляемые фотографии
  • Правильная миграция базы данных
  • Поддержка отображения ваших собственных изображений в списке.
  • Поддержка правильного отображения изображений предварительного просмотра в окне чата.
  • Поддержка установки срока действия изображения
  • Поддержка API ShareX
  • поддерживатьARM64иAMD64 Докер-образ
  • Белый режим (НЗП)
  • Публичная галерея (НЗП)
  • Фотоальбом (НЗП)

Что такое EXIF?

Данные EXIF, полное название «Формат сменных файлов изображений», представляют собой формат данных, который содержит различную информацию о фотографиях. Он может содержать много информации о фотографии, например, производитель камеры, модель камеры, дата съемки, настройки ISO, выдержка, фокусное расстояние, использовалась ли вспышка и многое другое. Некоторые камеры также добавляют информацию GPS для определения географического местоположения.

Поскольку данные EXIF ​​могут содержать такую ​​конфиденциальную информацию, например географическое местоположение, вам следует быть осторожными при обмене фотографиями. Если вы не хотите, чтобы эта информация о себе была обнародована, вам следует удалить данные EXIF ​​перед публикацией фотографии.

3. Связанные адреса

GitHubОфициальный склад:https://github.com/caramelfur/picsur

4. Настройте среду

  • сервер:Демонстрация Гугу была построена с использованием гонконгскойЛегкий сервер приложений Tencent , (лучший выбор не материковый,И это машина с довольно хорошими линиями,Жесткий диск тоже можно побольше) если вы только начинаете играть,,Вы также можете выбратьRacknerdиз高性价比сервер(Обратите внимание на местность и выберите город на западе США.)обратный прокси Гугу используетЛайкра ОблакоизCN2 машина GIA
  • Система: Дебиан 11 (ДД-скрипт Не требуется ДД, даже с оригинальной системой Хорошо, я буду использовать его во всех последующих уроках. Debian или Ubuntu Построить~)
  • Установлено Docker、Docker-compose(Связанные скрипты
  • 【Не требуется Но рекомендуется】Доменное имя и разрешить его на сервере(Покупка доменного имени, разрешение доменного имени Видеоурок
  • 【Не требуется】нести прежнюю установленную панель пагоды, зарубежная версия aapanel,и Установлено Nginx(Адрес установки
  • 【Не требуется В этом уроке используется】Установлено Nginx Proxy Manager(Связанные руководства

Требования к серверу: чем больше жесткий диск, тем лучше

5. Создайте видео (попробуйте сделать его позже на этой неделе = =)

5.1 YouTube

Видео адрес:https://youtu.be/VrsaCTWrjYE

5.2 Билибили

Билибили:https://www.bilibili.com/video/BV13h4y1i7tq/

6. Метод строительства

Если вы не используете облегченный сервер приложений Tencent Cloud, вы можете сразу перейти к разделу 6.1.

Установите систему (облегченный сервер приложений Tencent Cloud)

<img src="https://img.laoda.de/i/2022/08/16/zlyhcz-2.webp" alt="e59713fba8726d3cb55ae11bca83fe3c.png" style="zoom:33%;" />

Самая большая особенность легкого сервера Tencent Cloud заключается в том, что «Легкий» по сравнению с CVM больше подходит для начала работы новичкам. Здесь выбираем между. Docker Базовый образ, можно сохранить для последующей установки. Docker шаги (Если вы настаиваете на использовании домашнего сервера, установите его здесь. Docker Зеркало также поможет вам настроить источники внутреннего зеркала для ускорения доступа. docker Зеркальные ресурсы) Не рекомендуется использовать отечественные 。

Войдите в систему (облегченный сервер приложений Tencent Cloud)

<img src="https://img.laoda.de/i/2022/08/16/zlzlj7-2.webp" alt="2722040ee311eb4a9ebf2a4945bf38f4.png" style="zoom:25%;" />

<img src="https://img.laoda.de/i/2022/08/16/zm0gv8-2.webp" alt="c0b5d360053746c4095d592967ee401f.png" style="zoom:25%;" />

<img src="https://img.laoda.de/i/2022/08/16/zm1vqw-2.webp" alt="e0ba858f021b846ad0abc27acf5008c2.png" style="zoom:25%;" />

6.1 Установите Docker и Nginx Proxy Manager

Вы можете напрямую обратиться к этому контенту:

https://blog.laoda.de/archives/nginxproxymanager/

6.2 Создайте каталог установки

Создайте каталог установки:

Язык кода:shell
копировать
sudo -i

mkdir -p /root/data/docker_data/picsur

cd /root/data/docker_data/picsur
Язык кода:shell
копировать
vim docker-compose.yml

В разделе «Английский метод ввода» нажмите i

Следующее модифицировано Гугу, вы можете увидеть разницу (подробности смотрите в видео)

Язык кода:yaml
копировать
version: '3'
services:
  picsur:
    image: ghcr.io/caramelfur/picsur:latest
    container_name: picsur
    ports:
      - '8003:8080' #8003 можно изменить на неиспользуемый порт на сервере.
    environment:
      PICSUR_HOST: '0.0.0.0'
      PICSUR_PORT: 8080
      PICSUR_DB_HOST: picsur_postgres
      PICSUR_DB_PORT: 5432
      PICSUR_DB_USERNAME: picsur
      PICSUR_DB_PASSWORD: nice-long-strong-passw0rd-here  # Убедитесь, что ipicsur_postgres:partial POSTGRES_PASSWORD соответствовать
      PICSUR_DB_DATABASE: picsur

      ## Учетная запись администратора по умолчанию admin, Его нельзя изменить. Пароль — тот, который вы установили ниже.
      PICSUR_ADMIN_PASSWORD: different-nice-long-str0n6-passw0rd-here       

      ## Необязательно, если если не установлено, по умолчанию будут генерироваться случайные символы.
      # PICSUR_JWT_SECRET: CHANGE_ME
      # PICSUR_JWT_EXPIRY: 7d
      
      ## Максимальное количество байт, которое можно загрузить
      PICSUR_MAX_FILE_SIZE: 128000000  # 128 MB
      ## No need to touch this, unless you use a custom frontend
      # PICSUR_STATIC_FRONTEND_ROOT: "/picsur/frontend/dist"

      ## Warning: Verbose mode might log sensitive data
      # PICSUR_VERBOSE: "true"
    restart: unless-stopped
    
  picsur_postgres:
    image: postgres:14-alpine
    container_name: picsur_postgres
    environment:
      POSTGRES_DB: picsur
      POSTGRES_PASSWORD: nice-long-strong-passw0rd-here
      POSTGRES_USER: picsur
    restart: unless-stopped
    volumes:
      - ./picsur-data:/var/lib/postgresql/data  # Данные по умолчанию хранятся в каталоге picsur-data в текущей папке и могут быть изменены вами.

После того, как все внесли изменения, обратите внимание на то, чтобы переключиться на английский метод ввода, а затем нажмите esc,Затем :wq Сохраняем и выходим.

6.3 Включите брандмауэр сервера (не обязательно) и получите доступ к веб-странице.

Открыть порты брандмауэра 8003и

Например, способ открытия Tencent Cloud следующий (некоторые поставщики услуг не имеют собственного брандмауэра панели, поэтому этот шаг не обязателен):

<img src="https://img.laoda.de/i/2022/06/30/zlio5h-2.webp" alt="image-20220630215240864" style="zoom: 25%;" />

<img src="https://img.laoda.de/i/2022/06/30/10h3dqt-2.webp" alt="image-20220630220546335" style="zoom: 25%;" />

Здесь заполняем порт 8003,Заполните примечания picsur , просто подтвердите (если вы находитесь в docker-compose Изменено в файле 9009,Вам нужно заполнить это здесь 9009,и так далее)

<img src="https://img.laoda.de/i/2023/10/08/pr2dc6-0.webp" alt="image-20231008155710365" style="zoom:33%;" />

Проверьте, занят ли порт (начните с 8003 (например), введите:

Язык кода:shell
копировать
lsof -i:8003  #Проверять 8003 Порт занят?,если занято,Переопределить порт

Если ничего не появляется, это означает, что порт не занят и мы можем продолжить следующие операции ~

Если это произойдет:

Язык кода:shell
копировать
-bash: lsof: command not found

бегать:

Язык кода:shell
копировать
apt install lsof  #Установить lsof

Если порт не занят (если занят, измените порт, например, измените его на 8081,Уведомление docker И командную строку, и фаервол надо менять)

Теоретически мы можем войти http://ip:8003 Посетил.

Но здесь нам нужно сначала сделать обратный прокси!

Прежде чем использовать обратный прокси, вам нужно доменное имя!

namesilo выше xyz Доменное имя с суффиксом действует один год. 7 Юани можно выбрасывать каждый год. (Пустяки, по названию Плата за продление шестизначного номера xyz всегда составляет 0,99 доллара США. = =)

Если вы хотите использовать его в течение длительного времени, рекомендуется купить его. com Доменное имя с суффиксом более формально и его можно вводить laodade получить 1 Скидка в долларах США (не знаю, доступна ли она сейчас)

namesilo Поставляется с защитой конфиденциальности,Гугу использовал этот,Цена также относительно низкая среди этих регистраторов.,Ключевым моментом является то, что его компания не похожа на других регистраторов доменных имен.,没有七七八八из套路!(Это просто какой-то фоновый интерфейсуродливый древний = =)

[Покупка доменного имени] Код скидки Namesilo и руководство по разрешению доменных имен (с рекомендациями и мерами предосторожности при покупке сервера)

Давайте посмотрим вниз!

7. Обратный прокси

7.1 Использование прокси-менеджера Nginx

Добавление поворота прокси До,Убедитесь, что вы завершили разрешение доменного имени,不会из可以看这个:Доменное имя и разрешить его на сервереПокупка доменного имени, разрешение доменного имени Видеоурок

<img src="https://img.laoda.de/i/2022/10/16/n6t02e-2.webp" alt="image-20221016140213282" style="zoom:33%;" />

После этого войдите в систему Nginx Proxy Manager(不会из看这个:Установите прокси-менеджер Nginx.Связанные руководства))

Уведомление:

Nginx Proxy Менеджер (далее – НПМ) будет использоваться 80443 порт, поэтому эта машина не может его занять (например, изначально у нее был Nginx)

Просто добавьте несколько фотографий:

<img src="https://img.laoda.de/i/2023/10/08/pq4h57-0.webp" alt="5c9e551ea244c475284ef8eb1ec7dc65.png" style="zoom:33%;" />

<img src="https://img.laoda.de/i/2022/04/03/h9azjx_7.webp" alt="image-20220403104353185" style="zoom: 33%;" />

<img src="https://img.laoda.de/i/2023/10/08/pqes31-0.webp" alt="cfdb0f8e093e5c588728152b6fdf5fba.png" style="zoom:33%;" />

Обратите внимание на заполнение соответствующего доменное имяIP и порт,Согласно статье,должно быть 8003

Заполните IP:

если Nginx Proxy Manager и picsur На том же сервере вы можете ввести в терминале:

Язык кода:shell
копировать
ip addr show docker0

Просмотрите соответствующий внутренний IP-адрес контейнера Docker.

<img src="https://img.laoda.de/i/2022/09/29/pcdnz5-2.webp" style="zoom:50%;" />

В противном случае заполните напрямую picsur Сервер, где IP Вот и все.

比如这边我用изТенсент Облакоизсервер搭建服务,NPMНо вЛайкра Облакоизсервер上из,Итак, здесь мне нужно заполнить Тенсент IP сервера Облако

7.2 Использование панели «Пагода»

Я обнаружил, что многие друзья до сих пор привыкли использовать панель «Пагода», и вот обратная конфигурация панели «Пагода»:

Просто создайте новый сайт, без базы данных, без PHP, просто статический.

Затем откройте следующую конфигурацию и измените конфигурацию Nginx.

<img src="https://img.laoda.de/i/2022/08/19/ov4xrt-2.webp" alt="image-20220819150345725" style="zoom: 33%;" />

<img src="https://img.laoda.de/i/2022/08/19/owbbkb-2.webp" alt="image-20220819150542867" style="zoom: 33%;" />

Код выглядит следующим образом:

Язык кода:text
копировать
    location / {
      proxy_pass http://127.0.0.1:8003/;       # Будьте осторожны и измените его на тот порт, который вы действительно используете.
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }

Этот метод подходит для 90% изобратный прокси может быть эффективным,Затем就可以用доменное имя Приходить Установить Посетил.

Некоторые студенты могут спросить, почему бы просто не использовать функцию обратного прокси, которая поставляется с Pagoda.

<img src="https://img.laoda.de/i/2022/08/19/oxf800-2.webp" alt="image-20220819150730128" style="zoom: 33%;" />

Это также возможно, но сам Гугу сталкивался с ситуацией, когда при наличии нескольких веб-сайтов, которые необходимо отменить, при настройке здесь будет сообщаться об ошибке = =

Поэтому позже я перестал его использовать и просто использовал метод выше для управления им.

8. Руководство по использованию

8.1 Использование программы Picsur

Рекомендуется обратиться к видео.

8.2 Обновление изображений

Язык кода:shell
копировать
cd /root/data/docker_data/picsur

docker-compose down 

cp -r /root/data/docker_data/picsur /root/data/docker_data/picsur.archive  # На всякий случай заранее сделайте резервную копию

docker-compose pull

docker-compose up -d    # пожалуйста, не используй docker-compose stop остановить контейнер, поскольку для этого требуется дополнительное время на ожидание остановки контейнера; up -d Когда вы напрямую обновляете контейнер, он автоматически останавливается и немедленно перестраивает новый контейнер, поэтому нет необходимости тратить это время.

docker image prune  # prune Команда используется для удаления тех, которые больше не используются. docker объект. Удалить все элементы, которые не были tag Отметьте и изображения, которые не используются контейнерами

намекать:

Язык кода:shell
копировать
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] 

входить y

Приложения, созданные с использованием Docker, очень легко обновлять~

8.3 Удаление изображений

Язык кода:shell
копировать
cd /root/data/docker_data/picsur

docker-compose down

cd ..

rm -rf /root/data/docker_data/picsur  # Полностью удалить данные, сопоставленные с локальными

Может быть удален очень чисто.

9. Часто задаваемые вопросы

Проект все еще находится на ранней стадии, и многие функции еще не доработаны (например, стены с изображениями, многоязычные функции и т. д.), и могут быть некоторые ошибки. В конце концов, вы можете оставить отзыв автору. чем больше людей будут его использовать, тем больше у автора будет мотивации поддерживать его, больше людей примут участие в разработке проекта, что сделает проект более удобным.

10. Концовка

Желаю всем удачи и не стесняйтесь спрашивать, если у вас есть какие-либо вопросы. GitHub нести Issues,Вы также можете общаться и обсуждать друг с другом в комментариях.

В то же время студенты, у которых есть возможность внести свой вклад в проект, также могут активно присоединиться. проект Приходите и внесите свой вклад!

наконец,Спасибо разработчикам за их труд,Давайте воспользуемся таким прекрасным проектом!

Ссылки

GitHubОфициальный склад:https://github.com/caramelfur/picsur

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose